pthread地獄 part 2 (232レス)
上
下
前
次
1-
新
132
:
93
2008/07/25(金)12:44
AA×
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
132: 93 [sage] 2008/07/25(金) 12:44:25 今、気になっているのは、Webサーバの様なサーバプログラムで、ボスは常にaccept()待ち。 クライアントからの接続があったら、ワーカーを起動して、そのあとの処理はワーカに任せる。 といった、定番的なネットワークサーバを書く場合に、いわゆるfork()モデルと、スレッドモデルで どのような差があるのか(特にエラー発生時において)という事です。 なので、ワーカー側の処理ってのは、基本的に独立していてワーカー同士で共有を行うデータも 不要であると考えています。 非同期シグナルも使う必要は無いと考えています。(多分) fork()モデルの場合は、ワーカプロセスが同期シグナル(SIGSEGV,SIGILL等)を発生させたとしても、 他のワーカープロセスへの影響は特に無く、再度クライアントが接続してくれば、また、サービスを 再開することが出来ます。 スレッドモデルで同じことを実装することは可能なのか? 特定のワーカーが何らかの理由で同期シグナルを発生させた場合、その特定のワーカが死ぬのは しょうがないと思うんですが、他のワーカーまで道連れにしてしまうのは避けたいと思っています。 スレッドモデルを使ってこのような処理を安全に書けないって事は無いんじゃないのって思うんですが、 いかがなもんでしょう? また、MySQLはマルチスレッドで動いているらしいのですが、こういったDBサーバは更に複数のワーカ間で データの排他や同期を取る必要があると思うんですが、こういったプログラムは同期シグナルとどうやって 折り合いをつけているんでしょうか。 これがいわゆる茨の道ってやつですか? http://mevius.5ch.net/test/read.cgi/unix/1166620307/132
今気になっているのはサーバの様なサーバプログラムでボスは常に待ち クライアントからの接続があったらワーカーを起動してそのあとの処理はワーカに任せる といった定番的なネットワークサーバを書く場合にいわゆるモデルとスレッドモデルで どのような差があるのか特にエラー発生時においてという事です なのでワーカー側の処理ってのは基本的に独立していてワーカー同士で共有を行うデータも 不要であると考えています 非同期シグナルも使う必要は無いと考えています多分 モデルの場合はワーカプロセスが同期シグナル等を発生させたとしても 他のワーカープロセスへの影響は特に無く再度クライアントが接続してくればまたサービスを 再開することが出来ます スレッドモデルで同じことを実装することは可能なのか? 特定のワーカーが何らかの理由で同期シグナルを発生させた場合その特定のワーカが死ぬのは しょうがないと思うんですが他のワーカーまで道連れにしてしまうのは避けたいと思っています スレッドモデルを使ってこのような処理を安全に書けないって事は無いんじゃないのって思うんですが いかがなもんでしょう? またはマルチスレッドで動いているらしいのですがこういったサーバは更に複数のワーカ間で データの排他や同期を取る必要があると思うんですがこういったプログラムは同期シグナルとどうやって 折り合いをつけているんでしょうか これがいわゆる茨の道ってやつですか?
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 100 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.044s