Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 信号灯与现实生活中的钥匙/防护装置_Multithreading_Semaphore - Fatal编程技术网

Multithreading 信号灯与现实生活中的钥匙/防护装置

Multithreading 信号灯与现实生活中的钥匙/防护装置,multithreading,semaphore,Multithreading,Semaphore,信号灯应该限制多个线程同时访问某个共享资源,通常与保险箱的钥匙(都存储在某个桶中)或防止人们进入整个夜总会的警卫进行比较。然而,似乎有一个问题:如果你没有钥匙,你就无法打开保险箱。如果夜总会有警卫,他们会阻止你进入一个完整的夜总会,即使你完全喝醉了,不在乎规则。然而,一个不关心规则(或者更可能的是,其程序员忘记了资源共享的事实)的“醉酒”线程可以忽略您的信号量并损坏共享资源。是这样吗

信号灯应该限制多个线程同时访问某个共享资源,通常与保险箱的钥匙(都存储在某个桶中)或防止人们进入整个夜总会的警卫进行比较。然而,似乎有一个问题:如果你没有钥匙,你就无法打开保险箱。如果夜总会有警卫,他们会阻止你进入一个完整的夜总会,即使你完全喝醉了,不在乎规则。然而,一个不关心规则(或者更可能的是,其程序员忘记了资源共享的事实)的“醉酒”线程可以忽略您的信号量并损坏共享资源。是这样吗