资源的其他线程不应中断该片段的执行。可以使用互斥量来保证对任意共享资源的原子访问,而保护共享变量是其最常见的用法。

每一线程在访问同一资源时将采用如下协议:

避免死锁,最简单的方法是定义互斥量的层级关系。当多个线程对一组互斥量操作时,总是应该以相同顺序对该组互斥量进行锁定。

互斥量防止多个线程同时访问同一共享变量。条件变量允许一个线程就某个共享变量(或其他共享资源)的状态变化通知其他线程,

并让其他线程等待(阻塞于)这一通知。

导致线程不安全的典型原因:使用了在所有线程之间共享的全局或静态变量。

实现线程安全的方式多样,其一是将函数与互斥量关联使用,在调用函数时将其锁定,在函数返回时解锁。