当前位置: 代码迷 >> 多核软件开发 >> 线程同步和死锁有关问题
  详细解决方案

线程同步和死锁有关问题

热度:5695   发布时间:2013-02-26 00:00:00.0
线程同步和死锁问题 - C/C++ / C语言
C/C++ code
#include <windows.h>#include <stdio.h>CRITICAL_SECTION cs1;CRITICAL_SECTION cs2;DWORD WINAPI threadProc(PVOID pvParam){            EnterCriticalSection(&cs1);                         printf("1\n");            LeaveCriticalSection(&cs1);}DWORD WINAPI threadProc2(PVOID pvParam){            EnterCriticalSection(&cs2);                     printf("2\n");            LeaveCriticalSection(&cs1);}int main(){            DWORD dwId;            HANDLE hThread[2];            InitializeCriticalSection(&cs1);            InitializeCriticalSection(&cs2);            hThread[0]=CreateThread(NULL, 0, threadProc, NULL, 0, &dwId);            hThread[1]=CreateThread(NULL, 0, threadProc2, NULL, 0, &dwId);            WaitForMultipleObjects(2,hThread,FALSE,INFINITE);            EnterCriticalSection(&cs1);            printf("Main Thread---SendMessage\n");            LeaveCriticalSection(&cs1);                        CloseHandle(hThread[0]);            CloseHandle(hThread[1]);            DeleteCriticalSection(&cs1);            DeleteCriticalSection(&cs2);            return 0;}



上边的代码。有时候会出现死锁。有时候又可以显示正常但是没有同步成功。比较郁闷。不知道是什么情况。有没有高人肯指点一下。

------解决方案--------------------------------------------------------
DWORD WINAPI threadProc2(PVOID pvParam)
{
EnterCriticalSection(&cs2);

printf("2\n");
LeaveCriticalSection(&cs1);-----纳尼?

}
  相关解决方案