我是多线程的新手,并试图了解互斥锁的工作原理.很多谷歌和我找到了一个体面的教程,但它仍然有一些怀疑它是如何工作的,因为我创建了自己的程序,其中锁定不起作用.
互斥体的一个绝对非直观的语法是pthread_mutex_lock( &mutex1 );,当看起来互斥锁被锁定时,我真正想要锁定的是其他变量.这种语法是否意味着锁定互斥锁会锁定代码区域,直到互斥锁被解锁?然后线程如何知道该区域被锁定?[ 更新:线程知道该区域被 内存屏蔽锁定 ].这种现象应该被称为临界区吗?[ 更新:关键部分对象仅在Windows中可用,其中对象比互斥锁更快,并且仅对实现它的线程可见.否则,临界区只是指由互斥锁保护的代码区域 ]
简而言之,您能否帮助解决最简单的互斥示例程序以及关于它如何工作的逻辑的最简单的解释?我相信这会帮助很多其他新手.
关于Mutex和Critical部分之间的区别存在一个现有问题,但它也没有涉及Locks.
所以我想知道关键部分是否可以用于进程之间的线程同步.
也就是信号状态和非信号状态的含义