多线程同步机制包括:1、Critical Section(临界区),用来实现“排他性占有”;2、Semaphore,被用来追踪有限的资源;3、Mutex,可以在不同的线程之间实现“排他性占有”,甚至即使那些线程分属不同进程;4、Event,通常使用于 overlapped I/O,或用来设计某些自定义的同步对象。
本文操作环境:Windows7系统,Dell G3电脑。
多线程同步机制包括:
1、Critical Section
Critical section(临界区)用来实现“排他性占有”。适用范围是单一进程的各线程之间。它是:
一个局部性对象,不是一个核心对象。
快速而有效率。
不能够同时有一个以上的 critical section 被等待。
无法侦测是否已被某个线程放弃。
可以实现线程间互斥,不能用来实现同步。
2、Semaphore
Semaphore 被用来追踪有限的资源。它是:
一个核心对象。
没有拥有者。
可以具名,因此可以被其他进程开启。
可以被任何一个线程释放(released)。
既能实现线程间互斥,也能实现线程间同步。
在跨进程中使用时,如果拥有信号量的线程意外结束,其它进程不会收到通知。
3、Mutex
Mutex 是一个核心对象,可以在不同的线程之间实现“排他性占有”,甚至即使那些线程分属不同进程。它是:
一个核心对象。
如果拥有 mutex 的那个线程结束,则会产生一个 “abandoned” 错误信息。
i可以具名,因此可以被其他进程开启。
只能被拥有它的那个线程释放(released)。
在跨进程中使用时,如果拥有互斥器的进程意外结束,其它进程会收到一个
WAIT_ABANDOEND
消息。
4、Event
Event object 通常使用于 overlapped I/O,或用来设计某些自定义的同步对象。它是:
一个核心对象。
可是用来实现线程的互斥与同步。
可以具名,因此可以被其他进程开启。
在跨进程中使用时,如果拥有信号量的线程意外结束,其它进程也不会受到通知。
注意:临界区和互斥器都有“线程所有权”的概念,所以它们是不能用来实现线程间的同步的,只能用来实现互斥。原因是由于创建临界区或互斥器的线程可以不用等待LeaveCriticalSection()
,SetEvent()
就可以无条件进入保护的程序段,因为它拥有这个权利。另外,互斥器可以很好的处理”遗弃“操作。若线程在未释放对向象的时候就意外终止的,其它线程可以等待到一个WAIT_ABANDONED_0
。但是事件和信号量都不能做到。
事件和信号量都可以实现线程和进程间的互斥和同步。
就使用效率来说,临界区的效率是最高的,因为它不是内核对象,而其它的三个都是核心对象,要借助操作系统来实现,效率相对来说就比较低。
但如果要跨进程使用还是要用到互斥器、事件对象和信号量。
总之:在设计时,首先尽量不要使用全局变量,如果不得以先然后考虑使用Inter...()函数,然后在是临界区对象,最后才是事件、互斥器、信号量。
以上是多线程同步机制包括哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

国产AI黑马DeepSeek强势崛起,震撼全球AI界!这家成立仅一年半的中国人工智能公司,凭借其免费开源的大模型DeepSeek-V3和DeepSeek-R1,在性能上与OpenAI等国际巨头比肩,甚至在成本控制方面实现了突破性进展,赢得了全球用户的广泛赞誉。DeepSeek-R1现已全面上线,性能媲美OpenAIo1正式版!您可以在网页端、APP以及API接口体验其强大的功能。下载方式:支持iOS和安卓系统,用户可通过应用商店下载;网页版也已正式开放!DeepSeek网页版官方入口:ht

DeepSeek:火爆AI遭遇服务器拥堵,如何应对?DeepSeek作为2025年开年爆款AI,免费开源且性能媲美OpenAIo1正式版,其受欢迎程度可见一斑。然而,高并发也带来了服务器繁忙的问题。本文将分析原因并提供应对策略。DeepSeek网页版入口:https://www.deepseek.com/DeepSeek服务器繁忙的原因:高并发访问:DeepSeek的免费和强大功能吸引了大量用户同时使用,导致服务器负载过高。网络攻击:据悉,DeepSeek对美国金融界造成冲击,

2025年开年,国产AI“深度求索”(deepseek)惊艳亮相!这款免费开源的AI模型,性能堪比OpenAI的o1正式版,并已在网页端、APP和API全面上线,支持iOS、安卓和网页版多端同步使用。深度求索deepseek官网及使用指南:官网地址:https://www.deepseek.com/网页版使用步骤:点击上方链接进入deepseek官网。点击首页的“开始对话”按钮。首次使用需进行手机验证码登录。登录后即可进入对话界面。deepseek功能强大,可进行代码编写、文件读取、创

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver Mac版
视觉化网页开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版