Critical sections是win32中最容易使用的同步机制,用来处理一份共享资源,共享资源指的是每次只能够被一个线程处理的资源,包括内存、数据结构、文件等。
优点:
1.使用便捷,即声明即使用,不需要系统核心对象,声明一个CRITICAL_SECTION类型的变量、初始化critical section、删除critical section、进入critical section、离开critical section。
特性:
1.线程进入critical section后可以重复进入,离开时需要离开相应次数才真正释放资源。
2.Critical section是同步操作的锁,等待资源的线程会一直等待下去,直到获取锁资源。
用法:
1.初始化critical section时候调用initializecriticalsection,删除critical section时调用deletecriticalsection释放掉critical section,需要获取critical section的使用权限时调用entercriticalsection,离开时调用LeaveCriticalSection。
2.设计为全局变量或者需要共享资源的一组对象的共有对象(比如说链表的成员变量),尽量以最小的组范围来共享资源,否则其他线程会因为太多等待而浪费不少效率。
3.只应该在最小的资源冲突时使用critical section,程序执行很长时间时设计成数次进入与离开critical section。