トップページunix
213コメント82KB

pthread地獄 part 2

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2006/12/20(水) 22:11:47
Posixな糸に群がる亡者どものスレ。地獄の底でsage進行。
徳の高い人はpthread天国でも可。
■前スレ
 pthread地獄
 http://pc8.2ch.net/test/read.cgi/unix/1010933537/
0202名無しさん@お腹いっぱい。2011/04/26(火) 00:16:55.83
>>201
待ち順にはならぬ・・・ ならぬのだ・・・
0203名無しさん@お腹いっぱい。2011/04/26(火) 11:49:13.33
カーネルさん「順番は俺の都合のいいようにやるから、
順序を規定したければ自分で管理しろよ。
その代わり、マルチCPUになろうがなんだろうが
俺のやることは今と変わらんから安心しろ」
0204名無しさん@お腹いっぱい。2011/04/27(水) 02:10:10.39
カーネル△
0205名無しさん@お腹いっぱい。2011/08/31(水) 08:26:04.18
スレッドの同時実行数って決められない?
同時実行数1にして似非RTOSみたいにしたいんだけど
ちなみに各スレッドはsetschedpolicyでSCHED_FIFOにしてるつもりでエラーは返ってきてない
管理者で実行しているし、sched_priorityは1〜5にしてsetschedparamしてます

なにか手順が足りないでしょうか?
自分でセマフォとかで管理するしかないんでしょうか?
0206名無しさん@お腹いっぱい。2011/09/01(木) 08:57:44.31
うむ、cygwinではpthread_attr系がダミー実装しかされていない
0207名無しさん@お腹いっぱい。2011/09/01(木) 21:12:56.51
>>205
スレッド作ってコルーチン動かせばいい
0208名無しさん@お腹いっぱい。2011/09/09(金) 12:37:20.07
>コルーチン動かせばいい
これって具体的には何をすることをいってるの?
何か簡単な方法があるの?
0209名無しさん@お腹いっぱい。2011/09/12(月) 22:42:44.40
スレッド作った時点でそれってコルーチンだよな
中断再開を管理するスレッドを別に用意しろということか?
0210名無しさん@お腹いっぱい。2011/09/13(火) 00:33:50.94
いえ、こういう文脈でコルーチンといえば、
・エントリポイントが複数ある
・コードで指定した場所で実行停止が可能な
サブルーチンのことです。
「指定した場所」でCPUを明け渡しながら動きます。

0211名無しさん@お腹いっぱい。2011/09/16(金) 18:30:28.02
エントリポイントが複数ある ってどういうこと?
0212名無しさん@お腹いっぱい。2011/09/17(土) 19:37:06.16
哲学者の食事問題を例に取ると、全体で一つのコルーチン。
最初にどの哲学者から食事を開始してもいい。
0213名無しさん@お腹いっぱい。2011/10/18(火) 04:37:25.13
自前でユーザレベルスレッドを作ればできるってことじゃないのかな?

ready_queue/wait_queueそれからスレッドインスタンスの構造体、
あとはwait(sleep)/act(wakeup)関数を定義すればいい。
もしカーネルの内部構造について知識/技術がある人なら簡単と言えるかも。

大変かもしれんが、スレッド間の排他制御とか不要(最低限)になるから、
元の設計がしっかりしていれば、かえってデバックは楽だったりする。
■ このスレッドは過去ログ倉庫に格納されています