異なるスレッドでデータの一部を読み取り、その中のパターンを見つけるプログラムを書いています。
しかし、その前に (問題は以下のコードで発生します)、スレッドが適切にキャンセルされるかどうかを確認したかっただけです。それが私が立ち往生しているところです。エラーが表示されるまでに時間がかかりますが、基本的にプログラムを開始した後 (40 回の場合もあります)、メイン スレッドの while ループでハングします。
while (alive_threads) { //never ends, because alive_threads==1, but pthread_cleanup_pop should make sure that all canceling threads reduces counter and as a result reduce it to 0
usleep(1000);
}
... 最後のスレッドがキャンセルされるのを待っています。
コードはこちら: http://pastebin.com/VqRrhXPD
私が読んでいるファイルのコンテンツも提供しました。
オープニング:
./a.out 20 test.txt 40 clean
20 -number of threads
40 -portion of data