2019年(20)
发布时间:2019-01-15 20:55:30
一、概念1、线程可以安排它退出时的清理操作,这与进程的可以用atexit函数安排进程退出时需要调用的函数类似。这样的函数称为线程清理处理程序。线程 可以建立多个清理处理程序,处理程序记录在栈中,所以这些处理程序执行的顺序与他们注册的顺序相反pthread_cleanup_push(void (*rtn).........【阅读全文】
发布时间:2019-01-15 20:55:25
一、为什么要使用互斥量1、当多个线程共享相同的内存时,需要每一个线程看到相同的视图。当一个线程修改变量时,而其他线程也可以读取或者修改这个变量,就需要对 这些线程同步,确保他们不会访问到无效的变量2、在变量修改时间多于一个存储器访问周期的处理器结构中,当存储器的读和写这两个周.........【阅读全文】
发布时间:2019-01-15 20:55:22
一、读写锁的概念 1、读写锁与互斥量类似,不过读写锁有更高的并行性。互斥量要么加锁要么不加锁,而且同一时刻只允许一个线程对其加锁。对于一个变量的读取, 完全可以让多个线程同时进行操作 2、pthread_rwlock_t rwlock &.........【阅读全文】
发布时间:2019-01-15 20:55:17
一、为什么要使用条件变量 一个典型的实例: 在一条生产先线上有一个仓库,当生产者生产的时候需要锁住仓库独占,而消费者取产品的时候也要锁住仓库独占。如果生产者发现仓库满了,那么他就不能生产了,变成了阻塞状态。但是此时由于生产者独占仓库,消费者又无法进入仓库.........【阅读全文】
发布时间:2019-01-15 20:55:12
一、为什么要使用一次性初始化 有些事需要且只能执行一次(比如互斥量初始化)。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库函数时, 就不能在main里面初始化了,你可以用静态初始化,但使用一次初始(pthread_once_t)会比较容易些。.........【阅读全文】