我如何同步Visual C 2010中的线程

how do I synchronize threads in Visual C++ 2010

本文关键字:2010 线程 Visual 何同步 同步      更新时间:2023-10-16

VC 2010似乎不支持Mutex。我的功能如下。

DWORD WINAPI WatchItThreadProc(LPVOID lpParam)
{

    int *t=static_cast<int*>(lpParam);  
    while (true)
    {
        short cpuUsage = usage.GetUsage(DWORD(*t));
        printf("Thread id %d: %d%% cpu usagen", *t, cpuUsage);
        Sleep(500);
    }
}

在主函数中我创建两个线程如下。

DWORD    i1=2632;
DWORD    i2=4040;
void *p1=&i1;
void *p2=&i2;

CreateThread(NULL, 0, WatchItThreadProc, p1, 0, NULL);
CreateThread(NULL, 0, WatchItThreadProc, p2, 0, NULL);

我需要同步这两个线程,以避免比赛条件。如何使用Visual C 2010?

实现它

mutex受支持。请参阅:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(V=VS.85).aspx

您需要做的就是createMutex(),waitforsingleobject()和后来reteaseMutex()以同步两个线程。您可能已经忘记了链接到kernel32库。