windows线程同步的几种方法

线程同步技术, windows


   原子锁
       
  APi
    InterLockedIncrement(1个参数)
InterLockedDecrement(1个参数)
 
  
   临界区
     VOID 初始化一个临界区
   void initializeCriticalSection(
LPCRITTICAL_SECTION lpCriricalSection // 临界区变量
)
进入临界区
VOID EnterCriticalSection(
LPCRITICAL_SECTION lpCriricalSection // 临界区
)
离开临界区
VOID DeleteCriticalSection(
LPCRITICAL_SECTION lpCriricalSection // 删除临界区.
)
   互斥:
       当互斥锁不被枷锁时,有信号,当互斥锁上时,无信号.
        创建互斥
HANDLE CreateMutex(
 LPSECURITY_ATTRIBUTES lpMutexAttributes,
 // 安全属性
 BOOL bInitalOwner,  // 初始的拥有者,FALSE创建时没有线程拥有互斥.
      LPCTSTR lpName   // 命名  
等候互斥
 WaitFor....
3 释放互斥
BOOL ReleaseMutex(
 HANDLE hMutex  // handle tomutex
)
)
4. 关闭句柄.
5. 打开互斥锁
OpenMutex 通过名称返回互斥句柄

   事件
     
创建事件
 HANDLE CreateEvent( 
 LPSECURITY_ATTRIBUTES lpEventAttributes, // SD
      BOOL bManualReset,                       // true手动将信号转变为无信号
//  false,自动设置复位
      BOOL bInitialState,                      // false 初始状态无信号
      LPCTSTR lpName                           // object name
 );
等候时间
将事件设置成有信号状态
  BOOL SetEvent(hEvent)
将事件设置成无信号状态
        BOOL ResetEvent(hEvent);
     关闭事件
   CloseHandle();
   信号量
       
  HANDLE CreateSemaphore(
   LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
LONG lInitialCount,  // 初始化信号量数量3
LONG lMaximumCount,  // 信号量的最大值 ?? 10
LPCTSTR lpName     // 命名
  );
  创建成功返回信号量句柄
  等候信号量
  给信号量指定新值
  BOOL ReleaseSemaphore(  HANDLE hSemaphore,       // 信号量
  LONG lReleaseCount,      // count increment amount     // 指定新值.
  LPLONG lpPreviousCount   // previous count    // 可以为NULL
  );
     
   可等候定时器
等候函数:
   WaitForMultipleObjects - 等候多个
   
   DWORD WaitForMultipleObjects(
  DWORD nCount,             // 句柄数量
  CONST HANDLE *lpHandles,  // 句柄数组
  BOOL fWaitAll,            // true 等待所有句柄都有信号时返回,false 有一个有信号就返回
  DWORD dwMilliseconds      // 超时时间INFINITE 代表永远
  
  );
  返回值是有信号耳朵句柄在数组里的下标.
  
  
  
  
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值