Worker 模型

当发生死锁时:

1. 资源只能被一个进程享用

2. 进程获得资源后, 不会被其它进程剥夺

3. 多个进程在循环等待中

4. 一个进程可以拥有多个资源

 

=====================

 

由一个单进程程序改装成并发程序

 

def single_threaded_worker_routine(arg1, arg2): #参数由函数传入,不要用全局变量

...

 

def multi_threaded_worker_routine(independent_arg, mutex_protected_arg): 

...

只要准备参数,启动多个线程,改装完成

或(简单情况)

def _multi_threaded_worker_routine(independent_arg, dependent_arg):

在访问dependent_arg时使用mutex措施保护,你需要管理多个lock,这些lock也将会是全局的

 

========================

 

线程同步模型

Mutex: 保证某个区段在只有一个线程在工作

Semaphore(正数:剩余工作量,负数:正大等待的线程数, 实际是Semaphore总是大于-1的): down(从Semaphore里减去一,当Semaphore小于0时,等待);up(给Semaphore加一,当Semapore大于0时,随机唤醒一个线程)

 

你可能感兴趣的:(工作,Semaphore,UP)