chap2Windows多线程编程选编.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例 两个线程分别有一个初值为0的int局部变量,两个线程的行为是在一个循环中,使整型变量递增 一个约束条件,在递增过程中,这两个值的差不超过5 #include windows.h HANDLE hEvent1, hEvent2; int a[ 5 ]; DWORD WINAPI Thread(PVOID pParams ) { int i, num = 0; while( TRUE ) { WaitForSingleObject( hEvent2, INFINITE ); for ( i = 0; i 5; i++ ) a[ i ] = num; SetEvent( hEvent1 ); num++; } return 0; } 事件 int main() { hEvent1 = CreateEvent( NULL, FALSE, TRUE, NULL ); hEvent2 = CreateEvent( NULL, FALSE, FALSE, NULL ); CreateThread( NULL,0,Thread, NULL,0, NULL ); while( TRUE ) { WaitForSingleObject( hEvent1, INFINITE ); printf(%d %d %d %d %d\n, a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ] ); SetEvent( hEvent2 ); } return 0; } 事件 5、信号量 信号量是一个内核对象,可用来管理大量有限的系统资源 一个使用计数 32位整数,最大资源数量 32位整数,当前资源数量 信号量使用规则: 当前资源数量大于0,则等待信号量的线程获得资源继续运行,当前资源数量减1 当前资源数量等于0,则等待信号量的线程继续等待,直到有线程释放信号量,使当前资源数量大于0 创建信号量 5、信号量 HANDLE CreateSemaphore(   PSECURITY_ATTRIBUTES psa,   LONG lInitialCount, // initial count   LONG lMaximumCount, // maximum count   PCTSTR pszName // object name   ); 为现有的一个已命名信号机对象创建一个新句柄。 5、信号量 HANDLE OpenSemaphore(   DWORD fdwAccess,   BOOL bInheritHandle, // inheritance option   PCTSTR pszName // object name   ); SEMAPHORE_ALL_ACCESS 要求对信号量的完全访问; SEMAPHORE_MODIFY_STATE 允许使用ReleaseSemaphore函数; SYNCHRONIZE 允许使用信号量同步。 #include “windows.h“ 例2 CRITICAL_SECTION g_cs; char g_cArray[10]; // 共享资源 DWORD WINAPI ThreadProc1(PVOID pParam) { EnterCriticalSection(g_cs); // 对共享资源进行写入操作 for (int i = 0; i 10; i++) { g_cArray[i] = a; Sleep(1); } LeaveCriticalSection(g_cs); return 0; } DWORD WINAPI ThreadProc2(PVOID pParam) { // 进入临界区 EnterCriticalSection(g_cs); // 对共享资源进行写入操作 for (int i = 0; i 10; i++) { g_cArray[10 - i - 1] = b; Sleep(1); } // 离开临界区 LeaveCriticalSection(g_cs); return

文档评论(0)

挑战不可能 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档