10/07/23 14:55:03
専用のドライバ書くとかw
659:デフォルトの名無しさん
10/07/23 14:59:37
え、これってネットワークが鬼畜に速いかPCが遅すぎるとかいう話?
それともリアルタイムで糞重いエンコーディングとか画像処理系のフィルタリングかけてるとか?
だったらもっと速いPC買おうぜ
要するに処理能力が足りてないんだよ
660:デフォルトの名無しさん
10/07/23 15:11:24
>>659
UDPデータが連続して来るのにネットワーク速度はあんまり関係ないよね
ローカルLAN同士の通信で1000バイトやそこらのパケットの連続を
ループでまわすと処理の大小はあんまり関係ないと思うのだけど
661:デフォルトの名無しさん
10/07/23 15:57:32
sleep っつーか yield 挟むだけでも遅くなるような処理なの?
そんな膨大なデータやりとりするなら、しゃーないんじゃないかなあ
662:デフォルトの名無しさん
10/07/23 15:58:14
え?UDPの話なの?
663:デフォルトの名無しさん
10/07/23 16:02:18
UDPでsocket使ったユーザレベルアプリがCPU使用率100%になるって話?
664:デフォルトの名無しさん
10/07/23 17:06:42
UDP受信ね
665:デフォルトの名無しさん
10/07/23 17:32:28
なんかこの話題振ってる人不愉快
666:デフォルトの名無しさん
10/07/23 18:13:05
>>653
CPU使用率って誰が管理してんの?
667:デフォルトの名無しさん
10/07/23 18:17:58
単に非blockモードでreceiveを連続的に発行しているから
CPU使用率が100%になっているだけだと推測。
selectあるいは(Win32の)イベントオブジェクトで
UDP受信を非同期処理で実現していれば、
(一般的には)CPU使用率が100%になることはありえない。
668:デフォルトの名無しさん
10/07/23 18:25:57
>653
>>見た目が悪いのでCPU使用率に反映させない方法はないものだろうか
今日の晩ご飯はカレーライスがいい、カレーライスじゃなきゃ絶対にイヤダ!!
と言っているガキの戯言にしか聞こえない。あるいは、
中間試験の英語と数学で赤点をとってしまった。母親に知られるとやばいので、
それを隠し通せる方法はないものだろうか?
でもいい。質問の内容がプログラミング相談室向けでは無い。
お子様向け人生相談室に合う話題だ。
669:デフォルトの名無しさん
10/07/23 18:40:53
>>667
もちろんロックを実装して何も無い時にCPU負荷が上がらないようにしてるけど
データベースの1レコードを1つのパケットにして何十件かをまとめて送るんだけど
もちろん転送効率を落としたくないから可能な限り早く発送して再送をする
ローカル環境では50ミリ秒前後の遅延がロスが少ない感じだけど
この頻度でも受信側はループして処理すると100%になるよ
670:デフォルトの名無しさん
10/07/23 18:53:17
>>669
プラットフォームはWindows(WinSock)でいいのかな?以下、Yesとして答えるよ。
>>もちろんロックを実装して何も無い時にCPU負荷が上がらないようにしてるけど
ロックというのはWin32 APIのクリチカルセクションのことかな?
これは資源の排他制御に使う操作だから、これをループに組み込めばCPUを無駄に消費するのは当然。
>>667で書いたように、selectあるいはイベントオブジェクトで実装する必要がある。
671:デフォルトの名無しさん
10/07/23 19:19:58
>>667はそういう意味で言ってないよ
言語はC#でWaitHandleというものがある
恐らくWaitSingleObject APIをラップしたものだろうと思う
確かにコストは大きいけどCPU使用率に極端に影響するほどのコストではないと思うけどな
672:デフォルトの名無しさん
10/07/23 19:21:52
どっちかというと受信したデータを加工する作業が負担になってるし
これは省略出来ない処理なんでどうしようもない
673: ◆0uxK91AxII
10/07/23 21:30:57
>>650
kernelでCPUを喰っているなら、HWを買い換える。
userでなら、糞なprogramを書き換える。
674:デフォルトの名無しさん
10/07/27 12:39:17
Windows のコマンドラインアプリで netsh ってあるけどこれってシスコCLIみたいだなーと思ったら、まんま移植したものっぽいね。
netsh ってWindowsでサーバー構築してる人が使うものなんですか?
675:デフォルトの名無しさん
10/07/27 12:53:44
べっ、別にサーバー以外で使ってもいいんだからねっ
676:デフォルトの名無しさん
10/08/11 02:17:22
Winsock2について質問です。
クライアント側で FD_CLOSE が呼ばれるのはどういうときでしょうか?
・サーバ側がclosesocketしたとき
・サーバ側がshutdownしたとき
・クライアント側がclosesocketしたとき
・クライアント側がshutdownしたとき
677:デフォルトの名無しさん
10/08/11 11:08:45
>>676
上3つじゃね
678:デフォルトの名無しさん
10/08/11 12:50:50
何故ドキュメントを読まないのだ。
URLリンク(msdn.microsoft.com)(VS.85).aspx
The FD_CLOSE message is posted when a close indication is received for
the virtual circuit corresponding to the socket. In TCP terms, this means
that the FD_CLOSE is posted when the connection goes into the TIME WAIT or
CLOSE WAIT states. This results from the remote end performing a shutdown
on the send side or a closesocket. FD_CLOSE should only be posted after all
data is read from a socket, but an application should check for remaining
data upon receipt of FD_CLOSE to avoid any possibility of losing data.