我使用简单的锁定 TCP 套接字将消息发送到远程服务器,我遇到的问题是,对于每条消息,发送它需要非常不同的时间。
这是我得到的(一些例子):
Bytes Sent: 217, Time: 34.3336 usec
Bytes Sent: 217, Time: 9.9107 usec
Bytes Sent: 226, Time: 20.1754 usec
Bytes Sent: 226, Time: 38.2271 usec
Bytes Sent: 217, Time: 33.6257 usec
Bytes Sent: 217, Time: 12.7424 usec
Bytes Sent: 217, Time: 21.5912 usec
Bytes Sent: 217, Time: 31.1480 usec
Bytes Sent: 218, Time: 28.3164 usec
Bytes Sent: 218, Time: 13.0963 usec
Bytes Sent: 218, Time: 82.8254 usec
Bytes Sent: 218, Time: 13.0963 usec
Bytes Sent: 227, Time: …Run Code Online (Sandbox Code Playgroud) 我在 Windows 上使用 c++ (Visual Studio) 进行编程,我可以使用 std::mutex 或 CreateMutex 创建互斥体。它们之间有什么区别?我应该更喜欢哪一个,哪一个更快?它们在使用或暗示方面有什么具体细节吗?或者也许 std::mutex 只是一个外壳并在内部使用 CreateMutex?
我创建了一个简单的程序来确定QueryPerformanceCounter调用的时间.我的计算机需要大约8纳秒,但有时我可以看到每次通话最多500个用户的峰值.
一些细节:
Visual Studio 2013,C++
LARGE_INTEGER ll;
QueryPerformanceFrequency(&ll);
int steps = 10000000;
LARGE_INTEGER t1, t2;
long long dt=0, dtAvg=0, dtMax=0;
double NanoSecMult = 1000000000.0 / ll.QuadPart;
double UsecSecMult = 1000000.0 / ll.QuadPart;
for (int i = 0; i < steps; i++)
{
QueryPerformanceCounter(&t1);
QueryPerformanceCounter(&t2);
dt = t2.QuadPart - t1.QuadPart;
dtAvg += dt;
if (dt>dtMax)
dtMax = dt;
}
double dtd = dtAvg*UsecSecMult / steps;
double dtdMax = dtMax * UsecSecMult;
printf_s("steps: %d, dtAvg: %.12f usec, dtMax: %.6f usec\n", …Run Code Online (Sandbox Code Playgroud)