首页 > 代码库 > 关于同一线程两次调用EnterCriticalSection的测试
关于同一线程两次调用EnterCriticalSection的测试
#include "stdafx.h"#include <iostream>using namespace std;#include <windows.h>#include <process.h>CRITICAL_SECTION cs;//1.测试同一线程两次EnterCriticalSection会不会阻塞//答案:不会/*int _tmain(int argc, _TCHAR* argv[]){ InitializeCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); for(int i = 0;i < 20;i++) { cout<<"MainThread:"<<i<<endl; Sleep(1000); } LeaveCriticalSection(&cs); DeleteCriticalSection(&cs); system("pause"); return 0;}*///2.测试同一线程两次EnterCriticalSection,调用一次LeaveCriticalSection 另一个线程是否可以以EnterCriticalSection//答案:不可以 两次EnterCriticalSection 必须调用 LeaveCriticalSection两次unsigned __stdcall ThreadPorc ( void * ){ for(int i = 0;i<20;i++) { EnterCriticalSection(&cs); cout<<"线程2进入"<<endl; break; LeaveCriticalSection(&cs); Sleep(1000); } return 0;}int _tmain(int argc, _TCHAR* argv[]){ InitializeCriticalSection(&cs); EnterCriticalSection(&cs); EnterCriticalSection(&cs); _beginthreadex(NULL,0,ThreadPorc,NULL,0,NULL); for(int i = 0;i < 20;i++) { if(i == 10) { LeaveCriticalSection(&cs); } cout<<"MainThread:"<<i<<endl; Sleep(1000); } LeaveCriticalSection(&cs); Sleep(5000); DeleteCriticalSection(&cs); system("pause"); return 0;}
关于同一线程两次调用EnterCriticalSection的测试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。