malloc和free是不可重入函数。在主线程处于这两个函数之一的内部处理期间,从某个信号处理函数种调用这两个函数之一可能造成灾难性后果。
这是因为这两个函数操纵了相同的静态数据结构。
创建线程,并不影响已经打开的描述符的引用计数,这一点不同于fork
线程同步:
互斥锁:用于保护共享变量,用于防止同时访问共享变量。
条件变量:
如果想让主循环睡眠,直到某个线程通知它有事可做才醒来,那么使用条件变量和互斥锁可以实现这个功能。互斥锁提供互斥机制,条件变量提供信号机制。