) vc运行库官方下载(vc多线程)_世界速看料_西方制鞋网

vc运行库官方下载(vc多线程)_世界速看料

首页>滚动 > 正文
2023-03-25 16:15:21

来源:城市网

1、如果函数执行成功,则返回非零值,否则返回零。3、BOOL ce vent:reset event();

2、该函数将事件的状态设置为无信号状态,并一直保持到调用SetEvent()为止。由于自动事件由系统自动重置,因此不需要自动事件。

3、来调用这个函数。如果函数执行成功,则返回非零值,否则返回零。我们通常通过调用WaitForSingleObject函数来监控事件状态。我们已经


(资料图片)

4、该功能介绍。因为语言描述,CEvent

5、上课真的很难理解,但是仔细回想下面的套路,多看几遍就能理解了。

6、Routine 9 Multithreading 9

7、建立一个基于对话框的项目MultiThread9,在对话框IDD_MULTITHREAD9_DIALOG中添加一个按钮和两个编辑框控件。按钮的ID是IDC_WRITEW,标记为。

8、题为“写‘w’”;两个编辑框的id分别为IDC_W和IDC_D,属性均选择只读;

9、Declare two thread functions in multithreaded 9Dlg.h file: uintwritew (lpvoid pparam);

10、UINT WriteD(LPVOID pParam);

11、Use the category wizard to add the Seder class variables m_ctrlW and m _ ctrlD to IDC_W and IDC_D respectively.

12、将以下内容添加到MultiThread9Dlg.cpp文件中:

13、为了在文件中正确使用同步类,请在文件开头添加

14、#include "afxmt.h"

15、定义事件对象和字符数组,它们被定义为全局变量,以便在不同的线程之间使用。CEvent eventWriteD

16、char g_Array[10];

17、添加线程函数:UINT WriteW(LPVOID pParam)

18、{

19、CEdit *pEdit=(CEdit*)pParam;

20、pEdit-SetWindowText("");

21、for(int i=0;i10;i++)

22、{

23、g_Array[i]=""W"";

24、pEdit-SetWindowText(g_Array);

25、Sleep(1000);

26、}

27、eventWriteD.SetEvent();

28、return 0;

29、}

30、UINT WriteD(LPVOID pParam)

31、{

32、CEdit *pEdit=(CEdit*)pParam;

33、pEdit-SetWindowText("");

34、WaitForSingleObject(eventWriteD.m_hObject,INFINITE);

35、for(int i=0;i10;i++)

36、{

37、g_Array[i]=""D"";

38、pEdit-SetWindowText(g_Array);

39、Sleep(1000);

40、}

41、return 0;

42、}

43、仔细分析这两个线程函数,你就会正确理解CEvent类。线程将执行写入

44、WaitForSingleObject(event writed . m _ ho object,INFINITE);等到事件Eventwritten发出信号,线程将向下执行,因为Eventwritten对象

45、是一个自动事件,那么当WaitForSingleObject()返回时,系统会自动将eventWriteD对象重置为无信号状态。

46、双击按钮IDC_WRITEW,添加其响应函数:void CMultiThread9Dlg:OnWritew()

47、{

48、CWinThread *pWriteW=AfxBeginThread(WriteW,

49、m_ctrlW,

50、THREAD_PRIORITY_NORMAL,

51、0,

52、CREATE_SUSPENDED);

53、pWriteW-ResumeThread();

54、CWinThread *pWriteD=AfxBeginThread(WriteD,

55、m_ctrlD,

56、THREAD_PRIORITY_NORMAL,

57、0,

58、CREATE_SUSPENDED);

59、pWriteD-ResumeThread();

60、}

61、编译运行程序,点击“写‘w’”按钮,体验事件对象的功能。

62、C.使用CMutex类

63、互斥对象非常类似于临界区对象。互斥对象和临界区对象的区别在于互斥对象可以在进程之间使用,而临界区对象只能在同一个进程的线程之间使用。当然,互斥体也可以在同一个进程的线程之间使用,但是在这种情况下,使用临界区会节省系统资源,效率更高。

64、d、使用CSemaphore类

65、当需要计数器来限制可以使用的线程数量时,可以使用“信号量”对象。CSemaphore

66、类的对象保存当前访问指定资源的线程的计数值,即当前仍能使用该资源的线程数。如果此计数达到零,则所有

67、对这个CSemaphore

68、访问由类对象控制的资源的尝试被放入队列中等待,直到超时或计数值不为零。当一个线程被释放并且访问了一个受保护的资源时,它被计数

69、数值减1;一个线程完成了对被控共享资源的访问时,计数值增1。这个被CSemaphore

70、类对象所控制的资源可以同时接受访问的最大线程数在该对象的构建函数中指定。

71、CSemaphore 类的构造函数原型及参数说明如下:

72、CSemaphore (LONG lInitialCount=1,

73、LONG lMaxCount=1,

74、LPCTSTR pstrName=NULL,

75、LPSECURITY_ATTRIBUTES lpsaAttributes=NULL);

76、lInitialCount:信号量对象的初始计数值,即可访问线程数目的初始值;

77、lMaxCount:信号量对象计数值的最大值,该参数决定了同一时刻可访问由信号量保护的资源的线程最大数目;

78、后两个参数在同一进程中使用一般为NULL,不作过多讨论;

79、在用CSemaphore

80、类的构造函数创建信号量对象时要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数,每增

81、加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用资源计数是大于0的,就可以发出信号量信号。但是当前可用计数减

82、小到0时,则说明当前占用资源的线程数已经达到了所允许的最大数目,不能再允许其它线程的进入,此时的信号量信号将无法发出。线程在处

83、理完共享资源后,应在离开的同时通过ReleaseSemaphore()函数将当前可用资源数加1。

84、下面给出一个简单实例来说明CSemaphore 类的用法。

85、例程10 MultiThread10

86、建立一个基于对话框的工程MultiThread10,在对话框IDD_MULTITHREAD10_DIALOG中加入一个按钮和三个编辑框控件,按钮的ID为IDC_START,

87、标题为“同时写‘A’、‘B’、‘C’”;三个编辑框的ID分别为IDC_A、IDC_B和IDC_C,属性都选中Read-only;

88、在MultiThread10Dlg.h文件中声明两个线程函数: UINT WriteA(LPVOID pParam);

89、UINT WriteB(LPVOID pParam);

90、UINT WriteC(LPVOID pParam);

91、使用ClassWizard分别给IDC_A、IDC_B和IDC_C添加CEdit类变量m_ctrlA、m_ctrlB和m_ctrlC;

92、在MultiThread10Dlg.cpp文件中添加如下内容:

93、为了文件中能够正确使用同步类,在文件开头添加:

94、#include "afxmt.h"

95、定义信号量对象和一个字符数组,为了能够在不同线程间使用,定义为全局变量:CSemaphore semaphoreWrite(2,2);

96、//资源最多访问线程2个,当前可访问线程数2个

97、char g_Array[10];

98、添加三个线程函数:

99、UINT WriteA(LPVOID pParam)

100、{

101、CEdit *pEdit=(CEdit*)pParam;

102、pEdit-SetWindowText("");

103、WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);

104、CString str;

105、for(int i=0;i10;i++)

106、{

107、pEdit-GetWindowText(str);

108、g_Array[i]=""A"";

109、str=str+g_Array[i];

110、pEdit-SetWindowText(str);

111、Sleep(1000);

112、}

113、ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);

114、return 0;

115、}

116、UINT WriteB(LPVOID pParam)

117、{

118、CEdit *pEdit=(CEdit*)pParam;

119、pEdit-SetWindowText("");

120、WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);

121、CString str;

122、for(int i=0;i10;i++)

123、{

124、pEdit-GetWindowText(str);

125、g_Array[i]=""B"";

126、str=str+g_Array[i];

127、pEdit-SetWindowText(str);

128、Sleep(1000);

129、}

130、ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);

131、return 0;

132、}

133、UINT WriteC(LPVOID pParam)

134、{

135、CEdit *pEdit=(CEdit*)pParam;

136、pEdit-SetWindowText("");

137、WaitForSingleObject(semaphoreWrite.m_hObject,INFINITE);

138、for(int i=0;i10;i++)

139、{

140、g_Array[i]=""C"";

141、pEdit-SetWindowText(g_Array);

142、Sleep(1000);

143、}

144、ReleaseSemaphore(semaphoreWrite.m_hObject,1,NULL);

145、return 0;

146、}

147、这三个线程函数不再多说。在信号量对象有信号的状态下,线程执行到WaitForSingleObject语句处继续执行,同时可用线程数减1;若线程执

148、行到WaitForSingleObject语句时信号量对象无信号,线程就在这里等待,直到信号量对象有信号线程才往下执行。

149、双击按钮IDC_START,添加其响应函数: void CMultiThread10Dlg:OnStart()

150、{

151、CWinThread *pWriteA=AfxBeginThread(WriteA,

152、m_ctrlA,

153、THREAD_PRIORITY_NORMAL,

154、0,

155、CREATE_SUSPENDED);

156、pWriteA-ResumeThread();

157、CWinThread *pWriteB=AfxBeginThread(WriteB,

158、m_ctrlB,

159、THREAD_PRIORITY_NORMAL,

160、0,

161、CREATE_SUSPENDED);

162、pWriteB-ResumeThread();

163、CWinThread *pWriteC=AfxBeginThread(WriteC,

164、m_ctrlC,

165、THREAD_PRIORITY_NORMAL,

166、0,

167、CREATE_SUSPENDED);

168、pWriteC-ResumeThread();

169、}

170、好吧,多线程编程就介绍到这里,希望本文能对您有所帮助。

本文到此结束,希望对大家有所帮助。

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

标签:

THE END
免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代西方制鞋网的观点和立场。

相关热点

新华社电 上海市文化和旅游局近日发布《上海市密室剧本杀内容备案管理规定(征求意见稿)》,并截至12月8日面向社会公众广泛征求意见。这
2021-11-19 13:46:03
《中国证券报》17日刊发文章《备战2022 基金经理调仓换股布新局》。文章称,距离2021年结束仅剩一个多月,基金业绩分化明显。部分排名靠前
2021-11-19 13:46:03
交通运输部办公厅 中国人民银行办公厅 中国银行保险监督管理委员会办公厅关于进一步做好货车ETC发行服务有关工作的通知各省、自治区、直
2021-11-19 13:45:58
新华社北京11月17日电 题:从10月份市场供需积极变化看中国经济韧性新华社记者魏玉坤、丁乐读懂中国经济,一个直观的视角就是市场供需两端
2021-11-19 13:45:58
全国教育财务工作会议披露的消息称,2020年,中国国家财政性教育经费投入达4 29万亿元,占GDP总量的4 206%,我国国家财政性教育经费支出占G
2021-11-19 13:45:48
如果你也热爱“种草”,前方高能预警!让你心心念念、“浏览”忘返的网络平台,可能早已成为一块块“韭菜地”。近日,据《半月谈》报道,有...
2021-11-19 13:45:48
日前,工业和信息化部印发《“十四五”信息通信行业发展规划》(以下简称《规划》),描绘了未来5年信息通信行业的发展趋势。《规划》指出...
2021-11-19 13:45:40
本报讯(中青报·中青网记者 周围围)2021年快递业务旺季正式拉开帷幕。国家邮政局监测数据显示,仅11月1日当日,全国共揽收快递包裹5 69
2021-11-19 13:45:40
人民网曼谷11月17日电 (记者赵益普)17日上午,中国援柬埔寨第七批200万剂科兴新冠疫苗抵达金边国际机场。当天,柬埔寨政府在机场举行了
2021-11-19 13:45:35
金坛压缩空气储能国家试验示范项目主体工程一角受访者供图依托清华大学非补燃压缩空气储能技术,金坛压缩空气储能项目申请专利百余项,建立
2021-11-19 13:45:35
视觉中国供图42亿立方米据有关部门预计,今年山西煤炭产量有望突破12亿吨,12月份山西外送电能力将超过900万千瓦,今冬明春煤层气产量将达4
2021-11-19 13:44:34
14省份相继发布2021年企业工资指导线——引导企业合理提高职工工资今年以来,天津、新疆、内蒙古、陕西、西藏、山东、江西、山西、福建、四
2021-11-19 13:44:34
中新网客户端北京11月18日电 (记者 谢艺观)“一条路海角天涯,两颗心相依相伴,风吹不走誓言,雨打不湿浪漫,意济苍生苦与痛,情牵天下喜
2021-11-19 13:44:31
近日,交通运输部等三部门发布《关于进一步做好货车ETC发行服务有关工作的通知》。通知提到,对不具备授信条件的用户,商业银行可在依法合
2021-11-19 13:44:31
欧莱雅面膜陷优惠“年度最大”风波 涉及该事件集体投诉超6000人次美妆大牌双十一促销翻车?近日,因预售价格比双十一现货贵出66%,欧莱雅
2021-11-19 13:44:13
43 6%受访者会在工作两三年后考虑跳槽54 3%受访者认为跳槽对个人职业发展有利有弊如今对不少年轻人来说,想对一份工作“从一而终”不太容易
2021-11-19 13:44:13
超八成受访青年表示如有机会愿意开展副业 规划能力最重要64 4%受访青年指出做副业跟风心态最要不得如今,“身兼数职”已成为年轻人当中的
2021-11-19 13:44:01
发展氢能正当其时【科学随笔】氢能是一种二次能源,它通过一定的方法利用其他能源制取,具有清洁无污染、可储存、与多种能源便捷转换等优点
2021-11-19 13:44:01
“千杯不醉”的解酒“神药”能信吗?专家:网红“解酒药” 其实不算药俗话说,“酒逢知己千杯少”,酒一直是国人饭桌上至关重要的存在。尽...
2021-11-19 13:43:57
最新文章

相关推荐