Linuxでは動いていたのに、FreeBSDだと壊れ始めた。
void
threaded_function (void *arg) {
pthread_mutex_t *m = (pthread_mutex_t) arg;pthread_mutex_lock(m);
...
pthread_mutex_unlock(m);
}int
main(char **argv, int argv) {
pthread_t p;
pthread_mutex_t m;
pthread_mutex_init(m);
pthread_create(&p, NULL, threaded_function, (void *) &m);
}
はだめ。main()スコープでmを渡したらpthread_mutex_lock()だろうが、pthread_mutex_trylock()だろうがいきなりブロックした。ほげほげ。
他の例を見たらグローバルスコープにmutexがあったのでそれをやってみたらとりあえずブロックはなくなった。が、1スレッドしか動いてくれない。どうしたんだ・・・