FreeBSD + pthread

| コメント(0) | トラックバック(0)



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スレッドしか動いてくれない。どうしたんだ・・・


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ