线程同步互斥的4种方式

哦,是的这些同步机制……到了2 02 2 年我们仍然不太了解它们。

首先是临界区(CriticalSection)。
这就是我告诉你的。
当多个线程访问共享资源时;这仅允许一个线程使用一种资源。
就像抢厕所一样。
一次只能有一个人进入。
它速度快并且适合此类数据输入。
只要控制就好。
例如,如果一个城市有一个共享柜台,它会受到一个重要部分的保护,以防止多条线路同时变化,造成数据混乱。
当一个线程进来时,其他想要进入的线程必须等到内部线程释放后才能重新进入。
那就是阳。

然后就是互斥量(Mutex)。
这与临界区类似,但感觉更重。
它也是一个对象。
线程需要这个对象来使用共享资源。
由于这些对象只有其中之一,因此可以确保该资源不会同时被多个线程触及。
它不仅可以在程序内的线程内使用,还可以跨程序使用。
例如,如果一家公司在 2 02 2 年有多个项目,并且它们都使用同一服务器上的某些文件。
一次只有一个项目可以读取该文件。
可以使用互斥体来控制它以确保它是可写的。

然后是信号量。
这个有点松了。
它允许同时访问多个资源,但限制很高。
例如,一个停车场最多可停放 5 辆车。
这就是信号量的值。
停车场最初是空的,5 条线路都需要停车。
假设他们三个先去那里。
信号量减3 ,剩下2 剩下的2 条线路可以去停车场。
有些话题我想稍后再去。
但信号量已经是0了。
他们必须等到有车开出去,信号量又回到1 或2 ,才能重新进入。
它控制访问次数。

终于有活动了。
这很特别;它依赖于通知来同步。
线程可以等待事件;后者可以触发事件。
触发后,所有等待该事件的线程都会被唤醒并可以自行继续。
这非常有用。
例如,当一个任务完成时,会触发一个事件,其他等待结果的线程会收到通知并继续处理。
它可以设定优先级。

嗯...这就是区别。
我当时很困惑,后来才意识到。
也许我有点极端;信号量我认为互斥锁是最灵活、最强大的。
无论如何,到了2 02 2 年我就明白了这一点。

鍚屾鍜屼簰鏂ユ湁浠€涔堣仈绯诲拰鍖哄埆

我也...当时很困惑...2 01 7 年1 2 月2 8 日...突然有人告诉我...关于那个告诉...Ammonia Ammonia来代替代替锔屽彧鑳瑑鍒MIX墖娈怗怗겼lium嶅彲浠ヨ繍cen屻€?...总之,只是...感觉很奇怪...我意识到了后来……也许……我有点极端了……