模拟三个老师同时发放80份学习笔记,要求每发一份都要按顺序打印笔记编号 提示:每个老师相当于一个线程
时间: 2024-03-10 07:46:47 浏览: 18
好的,这是一个典型的多线程同步问题。可以使用线程锁机制来保证每个老师都按照顺序发放学习笔记。
下面是一个简单的 Python 代码示例:
```python
import threading
class Teacher(threading.Thread):
def __init__(self, name, notes):
threading.Thread.__init__(self)
self.name = name
self.notes = notes
self.lock = threading.Lock()
self.counter = 0
def run(self):
for note in self.notes:
with self.lock:
self.counter += 1
print(f"{self.name} 发放第 {self.counter} 份学习笔记,编号为 {note}")
notes = [i for i in range(1, 81)]
teacher1 = Teacher("老师1", notes)
teacher2 = Teacher("老师2", notes)
teacher3 = Teacher("老师3", notes)
teacher1.start()
teacher2.start()
teacher3.start()
teacher1.join()
teacher2.join()
teacher3.join()
```
在这个示例中,我们定义了一个 `Teacher` 类,每个老师相当于一个线程,每个老师都有自己的名字和要发放的学习笔记列表。在 `run` 方法中,我们使用了一个线程锁来保证每个老师都按照顺序发放学习笔记,并且用一个计数器来记录发放的笔记编号。最后,我们创建了三个老师线程,并启动它们,最后等待所有线程执行完毕。
这个示例可能会有一些不足之处,但可以作为一个基本的思路参考。如果您有更好的解决方案,欢迎分享!