- 332 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 02:27:10 ]
- C++Builder6のTServerSocketを使ったことある方教えてください。
フォームに張り付けた一つのTServerSocketを非同期設定で 特定ポートにてオープンし、最大100クライアント接続される ハブ的なアプリケーションを作っています。 OnConnect毎にユニークなCustomWinSocketが落ちてきて、 それをTThreadのインスタンスへ渡し、受信はスレッドへのイベント通知、 送信はスレッドの任意タイミングという設計です。 ソケットとスレッドが1:1になるイメージで、1伝文最大100バイト、 高負荷時には600伝文/s程のやりとりなのですが、 マルチコア環境で動作させると高負荷時の受信ラッシュで コンポーネントがお亡くなりになる現象が発生してしまいます。 各コネクションが同時に送信すると、75/100のソケットが受信イベントを受け取りますが、 以降待てど暮らせどイベントが発生しない(OnErrorでさえ!)という状況です。 WireSharkで見ると全てのコネクションでデータのやり取りが完遂し、 サーバも受信数分ACKをキチンと返しているのですが、 何故か上に上がってこない… シングルコア上では今のところ起きていないので、 マルチコア特有の問題なのかな、と勘繰っております。 でもI/O周りは排他処理されていないわけないとも思えますし・・・ コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。 よろしくお願いします。
|

|