博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程同步机制有临界区、互斥、信号量优缺点
阅读量:4155 次
发布时间:2019-05-25

本文共 908 字,大约阅读时间需要 3 分钟。

线程同步技术。

   1. Critical Sections(临界段),源代码中如果有不能由两个或两个以上线程同时执行的部分,可以用临界段来使这部分的代码执行串行化。它只能在一个独立的进程或一个独立的应用程序中使用。使用方法如下:

   //在窗体创建中

   InitializeCriticalSection(Critical1)

   //在窗体销毁中

   DeleteCriticalSection(Critical1)

   //在线程中

   EnterCriticalSection(Critical1)

   ……保护的代码

   LeaveCriticalSection(Critical1)

   2. Mutex(互斥对象),是用于串行化访问资源的全局对象。我们首先设置互斥对象,然后访问资源,最后释放互斥对象。在设置互斥对象时,如果另一个线程(或进程)试图设置相同的互斥对象,该线程将会停下来,直到前一个线程(或进程)释放该互斥对象为止。注意它可以由不同应用程序共享。使用方法如下:

   //在窗体创建中

   hMutex:=CreateMutex(nil,false,nil)

   //在窗体销毁中

   CloseHandle(hMutex)

   //在线程中

   WaitForSingleObject(hMutex,INFINITE)

   ……保护的代码

   ReleaseMutex(hMutex)

   3. Semaphore(信号量),它与互斥对象相似,但它可以计数。例如可以允许一个给定资源同时同时被三个线程访问。其实Mutex就是最大计数为一的Semaphore。使用方法如下:

   //在窗体创建中

   hSemaphore:= CreateSemaphore(nil,lInitialCount,lMaximumCount,lpName)

   //在窗体销毁中

   CloseHandle(hSemaphore)

   //在线程中

   WaitForSingleObject(hSemaphore,INFINITE)

   ……保护的代码

转载地址:http://hseti.baihongyu.com/

你可能感兴趣的文章
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
进程创建时信号处理函数处理
查看>>
进程创建时信号处理
查看>>
进程创建时内存描述符处理
查看>>
进程创建时命名空间处理
查看>>
进程创建时IO处理
查看>>
进程创建时线程栈处理
查看>>
进程创建时pid分配
查看>>
进程创建时安全计算处理
查看>>
进程创建时cgroup处理
查看>>
进程创建时共享内存处理
查看>>
idle进程创建
查看>>
内核线程创建
查看>>
linux elf tool readelf
查看>>
linux tool objdump
查看>>
linux tool nm
查看>>
字节对齐
查看>>
把类成员函数封装成线程API所需要的函数
查看>>
HTTP Live Streaming直播(iOS直播)技术分析与实现
查看>>