【问题标题】:how do I synchronize threads in Visual C++ 2010如何在 Visual C++ 2010 中同步线程
【发布时间】:2014-01-27 06:54:19
【问题描述】:

VC++ 2010 似乎不支持互斥锁。我有一个功能如下。

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 usage\n", *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 实现它?

【问题讨论】:

标签: c++ multithreading visual-studio-2010 visual-c++ locking


【解决方案1】:

支持互斥锁。 参考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682411(v=vs.85).aspx

您需要做的就是 CreateMutex()、WaitForSingleObject() 和后来的 ReleaseMutex() 来同步您的两个线程。您可能忘记了指向 Kernel32 库的链接。

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多