win32 实现死锁的小例子
生活随笔
收集整理的這篇文章主要介紹了
win32 实现死锁的小例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
死鎖的一種情況是兩個線程競爭兩個鎖,需要同時拿到兩個鎖才能執行,然后出現了兩個線程各拿一個鎖的情況,這樣兩個線程就都無法繼續執行,稱為死鎖。
避免死鎖的方法有很多,有預防死鎖,出現死鎖后通過某些方法釋放鎖等。
下面是一個死鎖的小例子:
// 死鎖demo#include "stdafx.h"CRITICAL_SECTION cs1, cs2;DWORD WINAPI ThreadA(LPVOID p) {while (TRUE){printf("A1\n");EnterCriticalSection(&cs1);printf("A2\n");EnterCriticalSection(&cs2);printf("A3\n");LeaveCriticalSection(&cs2);printf("A4\n");LeaveCriticalSection(&cs1);printf("A5\n");}return 0; }DWORD WINAPI ThreadB(LPVOID p) {while (TRUE){printf("B1\n");EnterCriticalSection(&cs2);printf("B2\n");EnterCriticalSection(&cs1);printf("B3\n");LeaveCriticalSection(&cs1);printf("B4\n");LeaveCriticalSection(&cs2);printf("B5\n");}return 0; }int main(int argc, char* argv[]) {InitializeCriticalSection(&cs1);InitializeCriticalSection(&cs2);CreateThread(0,0,ThreadA,0,0,0);CreateThread(0,0,ThreadB,0,0,0);Sleep(114514);return 0; }運行結果1:
運行結果2:
…
略。
總結
以上是生活随笔為你收集整理的win32 实现死锁的小例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows结束线程的三种方式
- 下一篇: WIN32多线程抢红包练习