メッセージングクライアントのテストアプリケーションでは、サーバーのフラッディングを避けるために、プロデューサスレッドを調整する必要があります。スレッドを1ミリ秒未満で一時停止
転送速度は1秒あたり約25,000メッセージ(メッセージあたり40マイクロ秒)であるため、スリープ(1)による遅延は非常に長くなります。
How to make thread sleep less than a millisecond on Windowsには、Windows APIに関連する情報が含まれています。 Delphiのコードスニペット、クラス、ライブラリはありますか?
私が15以下の異なる値との睡眠は、異なる転送速度(Windows Vistaの)を与えることがわかったベンズ解答後:
00:02 tx/rx 25740/3705 12831/1846 msgs/sec (77/541 microsecs/msg)
00:04 tx/rx 53101/7405 13255/1848 msgs/sec (75/541 microsecs/msg)
00:06 tx/rx 79640/11288 13260/1879 msgs/sec (75/532 microsecs/msg)
00:08 tx/rx 104520/14562 13055/1818 msgs/sec (76/550 microsecs/msg)
00:10 tx/rx 130760/18829 13066/1881 msgs/sec (76/531 microsecs/msg)
スリープ:すべての20件のメッセージの後に
スリープ(1) (5)20メッセージごとに:
00:02 tx/rx 7640/3622 3812/1807 msgs/sec (262/553 microsecs/msg)
00:04 tx/rx 14660/10794 3661/2695 msgs/sec (273/371 microsecs/msg)
00:06 tx/rx 21480/18171 3577/3026 msgs/sec (279/330 microsecs/msg)
00:08 tx/rx 28140/25642 3515/3203 msgs/sec (284/312 microsecs/msg)
00:10 tx/rx 34980/32692 3496/3267 msgs/sec (286/306 microsecs/msg)
これは、コメントab
00:02 tx/rx 44065/494 21988/246 msgs/sec (45/4065 microsecs/msg)
00:04 tx/rx 90493/756 22595/188 msgs/sec (44/5319 microsecs/msg)
00:06 tx/rx 142982/907 23810/151 msgs/sec (41/6622 microsecs/msg)
00:08 tx/rx 192562/1144 24055/142 msgs/sec (41/7042 microsecs/msg)
00:10 tx/rx 237294/1395 23717/139 msgs/sec (42/7194 microsecs/msg)
あなたが眠る、1ミリ秒以下の場合のみビジーウェイトを実装することができません。 – kludg
@Serg、AFAIK circa 15 ms – OnTheFly