日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows编程-- 用户方式中线程的同步---关键代码段(临界区)

發(fā)布時間:2025/5/22 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows编程-- 用户方式中线程的同步---关键代码段(临界区) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

可以從例子學習,更好的掌握

?

#include <windows.h>
#include
<iostream.h>
//兩個線程的聲明
DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int tickets = 100;
CRITICAL_SECTION g_cs;
//定義一個臨界區(qū)

int main()
{
HANDLE hThread1;
HANDLE hThread2;
hThread1
=CreateThread(NULL,0, Fun1Proc, NULL,0, NULL);
hThread2
=CreateThread(NULL,0, Fun2Proc, NULL,0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);

InitializeCriticalSection(
&g_cs); //初始化臨界區(qū)
Sleep(4000);

DeleteCriticalSection(
&g_cs); //當臨界區(qū)里沒有資源時釋放掉臨界區(qū)(可以這樣說嗎)???

return 0;
}


DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{


while (TRUE)
{
EnterCriticalSection(
&g_cs); //該線程進入臨界區(qū)
if (tickets > 0)
{
Sleep(
1);
cout
<< "Thread1 sell tickets:"<< tickets-- << endl;
}
else
{
break;
}
LeaveCriticalSection(
&g_cs); //退出臨界區(qū)
}

return0;
}


DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{

while(TRUE)
{
EnterCriticalSection(
&g_cs); //該線程進入臨界區(qū)
if(tickets > 0)
{
Sleep(
1);
cout
<< "Thread2 sell tickets:"<< tickets-- << endl;
}
else
{
break;
}
LeaveCriticalSection(
&g_cs); //退出臨界區(qū)
}
return 0;

}

?

?

?

?應該注意的:

1 關鍵代碼段(臨界區(qū))工作在用 用戶方式下

2 關鍵代碼段(臨界區(qū))是指一個小代碼段,在代碼夠執(zhí)行前。它必須獨占對某些資源的訪問權(quán)。

3 關鍵代碼段是工作在用戶方式下。同步速度較快,但在使用關鍵代碼段時,很容易進入死鎖狀態(tài)。因為在等待進入關鍵代碼段時無法設定超時值。

4 線程死鎖?線程1擁有了臨界區(qū)對象A。等待臨界區(qū)對象B的擁有權(quán)。線程2擁有了臨界區(qū)對象B,等待臨界區(qū)對象A的擁有權(quán),就造成了死鎖

5 無法用它們對多個進程中的各個線程進行同步?

?

以下的例子就是進入了死鎖。?


#include <windows.h>
#include
<iostream.h>
//1、兩個線程的聲明
DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int tickets = 100;
CRITICAL_SECTION g_csA;
//2、定義兩個臨界區(qū)
CRITICAL_SECTION g_csB;

int main()
{
HANDLE hThread1;
HANDLE hThread2;
hThread1
=CreateThread(NULL,0, Fun1Proc, NULL,0, NULL);
hThread2
=CreateThread(NULL,0, Fun2Proc, NULL,0, NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);

InitializeCriticalSection(
&g_csA); //3、初始化臨界區(qū)
InitializeCriticalSection(&g_csB);
Sleep(
4000);

DeleteCriticalSection(
&g_csA); //4、當臨界區(qū)里沒有資源時釋放掉臨界區(qū)
DeleteCriticalSection(&g_csB);
return 0;
}


DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{

// 11、兩個臨界區(qū)和兩個線程會形成死機。線程在等待無法進入臨界區(qū)g_csB。線程在等待無法進入臨界區(qū)g_csA

while (TRUE)
{
EnterCriticalSection(
&g_csA); //5、該線程進入臨界區(qū)g_csA
Sleep(1); //6、線程進入睡眠狀態(tài) 線程時間片斷結(jié)束線程開始
EnterCriticalSection(&g_csB); //9、線程進入臨界區(qū)g_csB,但是臨界區(qū)g_csB已被線程占用故只能等待時間片斷交給線程
if (tickets > 0)
{
Sleep(
1);
cout
<< "Thread1 sell tickets:"<< tickets-- << endl;
}
else
{
break;
}
LeaveCriticalSection(
&g_csB); //退出臨界區(qū)
LeaveCriticalSection(&g_csA);
}

return 0;
}


DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{

while(TRUE)
{
EnterCriticalSection(
&g_csB); //7、線程進入臨界區(qū)g_csB
Sleep(1); //8、線程進入睡眠狀態(tài)線程時間片斷結(jié)束線程開始
EnterCriticalSection(&g_csA); //10、線程進入臨界區(qū)g_csA 但是臨界區(qū)g_csA已被線程占用故只能等待時間片斷交給線程

if(tickets > 0)
{
Sleep(
1);
cout
<< "Thread2 sell tickets:"<< tickets-- << endl;
}
else
{
break;
}
LeaveCriticalSection(
&g_csA);
LeaveCriticalSection(
&g_csB); //退出臨界區(qū)
}
return 0;
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/fangshenghui/archive/2011/01/05/1926396.html

總結(jié)

以上是生活随笔為你收集整理的Windows编程-- 用户方式中线程的同步---关键代码段(临界区)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜视频免费看 | 欧美三级欧美成人高清 | 免费看麻豆 | 色网站免费在线观看 | 亚洲国产福利视频 | 无码不卡av东京热毛片 | 在线播放日韩av | 免费不卡视频 | 国产精品不卡在线观看 | 看成人片| 黄色网址大全免费 | 黄视频网站免费看 | 成人精品三级 | 青青草97国产精品免费观看 | 少妇高潮av久久久久久 | 欧美色图在线播放 | 精品成人 | aaa一级黄色片 | 天天插伊人 | 精东传媒在线观看 | 自拍亚洲一区 | 欧美大黄 | 欧美高清二区 | 在线播放成人av | 夜夜操夜夜 | 久久艹这里只有精品 | 国产精品呻吟 | 91免费版在线 | 日本中文字幕网站 | 日韩一级黄色录像 | av动漫在线免费观看 | 国产稀缺精品盗摄盗拍 | 亚洲天堂婷婷 | 26uuu精品一区二区 | 亚洲国产精品欧美久久 | 亚洲操一操 | 久久人人爽人人爽人人片 | 毛片网站在线观看 | www.97色 | 成人黄色免费视频 | 国产精品99久久久久久久 | 一对一色视频聊天a | 国产最爽的乱淫视频国语对白 | 朝桐光在线观看 | 黑人玩弄人妻一区二区三区 | 欧美一区二区公司 | 制服.丝袜.亚洲.中文.综合懂色 | 免费荫蒂添的好舒服视频 | 第四色成人网 | 欧美色图一区 | 操操影视 | 色综合图片区 | 一区二区三区视频在线播放 | 欧美激情免费观看 | 亚洲色图国产精品 | 亚洲高清在线一区 | 美女视频黄是免费 | 99国产精品一区二区三区 | 无码国产精品高潮久久99 | 午夜精彩视频 | 欧美一级三级 | 日日骚视频 | a级黄色录像 | 欧美激情18p | 91九色porny视频 | 国产中文字幕精品 | 韩国毛片一区二区 | 五月天婷婷激情 | 少妇色综合 | 亚洲欧美精品久久 | 久色视频在线播放 | 国产永久精品大片wwwapp | 国产成人一区二区三区免费看 | 欧美日韩成人在线观看 | 精品久久久精品 | 岛国成人在线 | 欧美激情片在线观看 | 爱爱网视频 | 一级特黄色 | 美女扒开下面让男人捅 | 国模人体一区二区 | 国产一区欧美一区 | 欧美另类xxxx | 张津瑜国内精品www在线 | 亚洲综合91| 女人扒开屁股让我添 | 性xxxx另类xxⅹ | 宅男午夜在线 | 欧美成人精品欧美一 | 亚洲国产影院 | 夜夜摸夜夜操 | 深夜福利国产 | 中文字幕日韩欧美一区二区三区 | 亚洲无线视频 | 污视频软件在线观看 | 免费看亚洲 | 就去色综合 | 李宗瑞91在线正在播放 | 欧美日韩电影一区二区 |