题目:有一个南北向的桥,只能容纳一个人,现桥的两边分别有10人和12人,编制一个多线程序让这些人到达对岸,每个人用一个线程表示,桥为共享资源。在过桥的过程中显示谁在过桥及其走向。
import threading
import time
from collections import deque
class Person(threading.Thread):
def __init__(self, id, msg):
threading.Thread.__init__(self)
self.id = id
self.msg = msg
def run(self):
cross(self)
def cross(self):
print(str(self.id) + "\t" + self.msg)
class PersonPool(threading.Thread):
canCross = threading.RLock()
def __init__(self):
threading.Thread.__init__(self)
self.persons = deque([])
self.shutdown = False
def add(self, person):
self.persons.append(person)
def stop(self):
self.shutdown = True
def run(self):
self.waitForPerson()
def waitForPerson(self):
while self.shutdown == False:
PersonPool.canCross.acquire()
while len(self.persons) != 0:
person = self.persons.popleft()
person.cross()
time.sleep(1)
PersonPool.canCross.release()
if __name__ == "__main__":
nsPool = PersonPool()
snPool = PersonPool()
snPool.start()
nsPool.start()
for i in xrange(0, 10):
snPool.add(Person(i, "From North To South"))
for j in xrange(0, 12):
snPool.add(Person(j, "From South To North"))
分享到:
相关推荐
生产者消费者问题是多线程编程中的经典问题,它模拟了两个不同角色——生产者和消费者在共享资源时的协作情况。在这个模型中,生产者负责创建数据,而消费者则负责消费这些数据。为了保证系统的稳定运行,需要防止...
在Linux操作系统中,进程间通信(IPC,Inter-Process Communication)是多个进程之间共享数据、交换信息的...同时,这也是一个很好的练习,能让你掌握多线程、同步与互斥等概念,以及如何在实践中避免常见的并发问题。
在多处理器或多线程环境中,同步机制变得尤为重要,因为资源(如内存、磁盘、网络等)往往是共享的,不当的同步会导致死锁、饥饿、竞态条件等问题。 ### 进程或线程同步基本原理 进程或线程同步的基本思想是控制...
本文将对进程的同步与互斥习题进行详细的解释和分析,涵盖了多种不同的场景和问题,包括进程的同步、互斥、信号量、缓冲区、生产者消费者问题、读者写者问题、司机与售票员问题、汽车过桥问题等。 一、进程的同步与...
【并发程序设计】在计算机操作系统中,特别是在多进程或线程环境下,并发程序设计是确保系统资源有效管理和安全运行的...这种同步机制在操作系统和多线程编程中广泛应用,对于避免死锁和资源竞争等并发问题至关重要。
桥和电梯是经典的并发问题示例,用于演示如何在多线程环境中解决同步和互斥问题。在桥的例子中,可能存在多个车辆或行人试图同时过桥,但桥梁的承重有限。电梯问题则关注如何有效地调度电梯服务多层楼的乘客。在...
5. **进程管理**:可能使用`fork()`或线程API(如`pthread_create()`)创建多个并发执行的实体,每个实体都有自己的临界区,并在进入和离开时调用P、V操作。 6. **示例应用**:如银行家算法、生产者消费者问题、哲学...
【知识点详解】 1. **递归问题解决**:在第一道面试题中,涉及的是一个...这些面试题覆盖了逻辑推理、概率统计、几何计算、算法设计等多个IT领域的知识点,反映了产品经理和软件工程师需要具备的基本技能和思维方式。
操作系统信号量是操作系统中的一种机制,用于解决多进程或线程间的同步问题。信号量是一种特殊的变量,用于记录资源的可用数量。它可以被用来实现进程或线程之间的同步和互斥。 在操作系统中,信号量可以被用来解决...
5. **读者写者问题**:这是一个经典的多线程同步问题。这里使用信号量实现第二类读者写者问题,确保多个读者可以同时读取数据,但写者和其他进程需要互斥访问。需要两个信号量,W表示写者访问,R表示当前阅读者数量...
操作系统中的信号量是一种重要的同步机制,用于解决多进程或线程间的资源竞争问题。在给定的问题中,通过...在操作系统中,信号量是实现进程间通信和同步的重要工具,对于理解和设计多线程环境下的并发控制至关重要。
本文档提供了五个PV操作例题,涵盖了计算机操作系统中的多线程协调、同步和互斥问题。每个例题都提供了详细的PV操作解决方案,涵盖了PV操作的基本概念和应用。 问题 1:司机与售票员的协调 在这个例子中,司机和...
- **过桥问题**:需要根据成员的速度和手电筒的传递,优化组合以达到最少时间。 - **分盐问题**:利用天平称重,通过三次操作将140克盐分为50克、90克和0克(剩余的归为50克)。 5. **其他**: - **进程与线程**...
这是一道经典的过桥问题,旨在测试解决问题的能力及团队合作意识。解法如下: 1. **第一步**:a和b先过桥,耗时2分钟; 2. **第二步**:a返回,耗时1分钟; 3. **第三步**:c和d一起过桥,耗时10分钟; 4. **第四步...
10.13 面试例题:与线程有关的程序设计问题174 10.14 面试例题:废弃内存的自动回收175 10.15 面试例题:32位操作系统177 10.16 面试例题:网络性能177 10.17 面试例题:高速磁盘缓存177 10.18 面试例题:...
10.13 面试例题:与线程有关的程序设计问题174 10.14 面试例题:废弃内存的自动回收175 10.15 面试例题:32位操作系统177 10.16 面试例题:网络性能177 10.17 面试例题:高速磁盘缓存177 10.18 面试例题:...
操作系统是计算机系统中的核心软件,它管理着计算机的硬件资源,同时也为用户提供了与硬件交互的接口。在工学操作系统课程中,期末复习通常会覆盖...对于公路桥的问题,可以利用资源信号量来限制同时过桥的车辆数量。
例如,在独木桥问题中,可以使用信号量来实现一次仅允许一人过桥。类似地,对于十字路口的安全行驶管理,也可以借助信号量来控制车辆的通行,确保每次只有一个方向的车辆可以通过,从而避免碰撞。 总的来说,操作...
令行输入,要求用多线程自动播放。1)设有一个由10个英文单词构成的字符串数组,要求: (1)统计以字母w开头的单词数; (2)统计单词中含“or”字符串的单词数; (3)统计长度为3的单词数。 创建一个程序,输出...