ccriticalsection与cmutex的区别

殷惠若
导读 大家好,小阳来为大家解答以上的问题。ccriticalsection与cmutex的区别这个很多人还不知道,现在让我们一起来看看吧!1、CCriticalSection使

大家好,小阳来为大家解答以上的问题。ccriticalsection与cmutex的区别这个很多人还不知道,现在让我们一起来看看吧!

1、CCriticalSection使用这个类,要包含头文件afxmt.h.但是这个类好像是应用到MFC中的。

2、不能与#include 同时使用。

3、建议使用CRITICAL_SECTION m_Sec;来定义临界区。

4、使用EnterCriticalSection(&m_Sec);进入并锁定临界区,LeaveCriticalSection(&m_Sec);离开临界区。

5、具体代码如下:#include #include DWORD WINAPI myfun1(LPVOID lpParameter);DWORD WINAPI myfun2(LPVOID lpParameter);CRITICAL_SECTION m_Sec;int a = 0;int main(){InitializeCriticalSection(&m_Sec);//初始化临界区HANDLE h1, h2;h1 = ::CreateThread(NULL, 0, myfun1, NULL, 0, NULL);printf("线程1开始运行!");h2 = ::CreateThread(NULL, 0, myfun2, NULL, 0, NULL);printf("线程2开始运行!");::CloseHandle(h1);::CloseHandle(h2);::Sleep(10000);DeleteCriticalSection(&m_Sec);return 0;}DWORD WINAPI myfun1(LPVOID lpParameter){EnterCriticalSection(&m_Sec);a++;printf("%d", a);LeaveCriticalSection(&m_Sec);return 0;}DWORD WINAPI myfun2(LPVOID lpParameter){EnterCriticalSection(&m_Sec);a++;printf("%d", a);LeaveCriticalSection(&m_Sec);return 0;}#include 换成#include 注意要在设置里面把use run_time libary中里面的选项改为multithreaded找到 包含 CCriticalSection 的头文件加进去。

本文到此分享完毕,希望对大家有所帮助。

标签:

版权声明:本文由用户上传,如有侵权请联系删除!