对于一个线程来说, 其终止方式有两种: 执行完线程函数或者自身调用 pthread_exit(void *), 如果线程通过执行完线程函数而终止的, 那么其他线程通过pthread_join获得的线程返回值就是线程函数的返回值..., 一定要先初始化该互斥锁
释放互斥锁的线程必须是获得互斥锁的那个线程
当 destroy 互斥锁的时候, 不该有线程还在使用这个互斥锁
属性
在动态创建互斥锁时, 我们可以传入一个锁属性变量 pthread_mutexattr_t...类型动作相同。..., 第二个参数为互斥锁, 之所以需要传入互斥锁, 是因为如果不传入互斥锁, 当线程进入挂起状态时, 就无法释放掉该互斥锁, 而其他线程就无法获得该互斥锁,就没办法更新flag的值, 也无法唤醒线程1....当线程调用 sem_wait() 时, 如果信号量的值大于0, 那么只会把信号量减1, 线程会继续往下执行.