读书人

线程同步和死锁有关问题

发布时间: 2012-02-28 13:06:35 作者: rapoo

线程同步和死锁问题 - 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);-----纳尼?

}

读书人网 >软件开发

热点推荐