线程同步和线程互斥的区别_线程互斥的几种方式

线程同步和线程互斥的区别_线程互斥的几种方式线程同步互斥的4种方式1.临界区(Critical Section):适合一个进程内的多线程访问公共区域或代码段时使用,防止多个线程同时访问一个变量或者代码段。2.互斥量(Mutex):适合不同进程内多线程访问公共区域或者代码段时使

线程同步互斥的4种方式   1.临界区(Critical Section):适合一个进程内的多线程访问公共区域或代码段时使用,防止多个线程同时访问一个变量或者代码段。   2.互斥量(Mutex):适合不同进程内多线程访问公共区域或者代码段时使用,可以一进程内多线程使用,也可以多个进程多线程使用。   3.事件(EVENT):通过线程间触发事件实现同步互斥,适用于后一线程需要等待前一个线程数据输出使用   4.信号量(Semaphore):与临界区和互斥量不同,可以实现多个线程同时访问公共区域数据,原理与操作系统中的PV操作类似,先设置一个访问公共区域的线程最大连接数,每一个线程访问共享区资源数就减一,直到资源数小于等于零。       下面为同步互斥使用流程   互斥:   关键段CS :   创建或初始化   InitializeCriticalSection(PCRITICAL_SECTION  lpCriticalSection)   销毁                  DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)   进入关键区域    EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)   离开关键区域    LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)   互斥量Mutex:   创建或初始化   CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes,                                                   BOOL bInitialOwner,                                                        LPCTSTR lpName)   销毁                  CloseHandle (HANDLE hMutex)   进入互斥区域    WaitForSingleObject(HANDLE hMutex, INFINITE)   离开互斥区域    ReleaseMutex(HANDLE hMutex)       同步:   事件Event   创建                   CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,                                                   BOOL bManualReset,                                                   BOOL bInitialState,                                                   LPCTSTR lpName)   销毁                   CloseHandle(HANDLE hEvent)   使事件触发        SetEvent(HANDLE hEvent)   使事件未触发    ResetEvent(HANDLE hEvent)   信号量Semaphore   创建                    CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,                                                              LONG lInitialCount,                                                              LONG lMaximumCount,                                                              LPCTSTR lpName)   销毁                    CloseHandle(ANDLE hSemaphore)   递减计数             WaitForSingleObject(HANDLE hSemaphore, INFINITE)   递增计数             ReleaseSemaphore(HANDLE hSemaphore,                                                                LONG lReleaseCount,                                                                  LPLONG lpPreviousCount )    

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/21923.html

(0)
上一篇 2024年 9月 15日 上午9:06
下一篇 2024年 9月 15日 上午9:10

相关推荐

关注微信