Trong ứng dụng thử nghiệm ứng dụng khách nhắn tin, chuỗi sản xuất cần phải được điều chỉnh để tránh làm ngập máy chủ.Tạm dừng một chuỗi trong ít hơn một mili giây
Do tốc độ truyền tải khoảng 25.000 tin nhắn mỗi giây (40 micro giây cho mỗi tin nhắn), độ trễ gây ra bởi Sleep (1) sẽ quá dài.
How to make thread sleep less than a millisecond on Windows chứa một số thông tin liên quan đến API Windows. Có một đoạn mã, lớp hoặc thư viện cho Delphi?
Sau Bens câu trả lời tôi thấy rằng giấc ngủ với các giá trị khác nhau dưới 15 cũng cho tốc độ khác nhau chuyển (Windows Vista):
Sleep (1) sau mỗi 20 tin nhắn:
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)
Ngủ (5) sau mỗi 20 tin nhắn:
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)
Điều này bất ngờ sau khi đọc nhận xét ab ra giới hạn dưới cho bận rộn chờ đợi
Và các giá trị mà không throttling
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)
Bạn có thể thực hiện chỉ bận rộn chờ đợi ít hơn 1 ms, không ngủ. – kludg
@Serg, AFAIK khoảng 15 ms – OnTheFly