理解阻塞和非阻塞概念:

eg: open->read->close
eg: open->while(read)->close
read -> data received/receiving

 

spin lock:(from baidu)

是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。

Task A                                   Task B
-doing-                                  -waiting-
-done-                                   -doing-
-------                                  -done-
                     done

 从doing-done阶段时间/耗时要小,自旋锁临界区应设置更小,然而信号量则不一样,可以设置更大。

 

信号量同步也有两种方式:

a. up -> down

b. completion / wait for completion