关于Linux下多线程编程技术学习总结

作为一个IT人员,不断的学习和总结是我们这个职业习惯,所以我会将每个阶段的学习都会通过一点的总结来记录和检测自己的学习效果,今天为大家总结了关于Linux下多线程编程技术:

 1、线程的创建、终止及控制:

任何进程在启动时就已有了一个主线程,如果需要再生成线程则使用pthread_create函数,在该函数中可以指定线程的属性、线程例程、传给线程例程的参数。线程例程是一个用户自定义的函数,及线程执行的代码。当线程例程返回时,线程则结束运行,也可以显示调用pthread_exit来退出。线程在创建后可以用pthread_self函数获取线程ID。函数pthread_join使得进程等待线程的终止,调用pthread_join后进程将被挂起,直到指定的某个线程(在pthread_join的参数thread中指定)终止。而pthread_detach函数正好相反,它使得进程不必等待线程的结束,从而允许进程继续执行别的操作,被detach的线程在执行结束后其占用的资源由系统自动收回。

 2、线程间的互斥:

互斥操作,就是对某段代码或某个变量修改的时候只能有一个线程在执行这段代码,其他线程不能同时进入这段代码或同时修改变量。pthread常用pthread_mutex互斥体来实现线程互斥操作。pthread_mutex_init函数用于初始化一个互斥体变量。pthread_mutex_lock函数用于给互斥体变量上锁,如果上锁时互斥体已经被被的线程锁住了,那么调用该函数的线程将被阻塞直到互斥体被解锁为止。而pthread_mutex_trylock则是试图锁住互斥体,但在互斥体已经被加锁时不会造成阻塞,而是迅速返回。pthread_mutex_unlock函数对互斥体解锁。pthread_mutex_destroy则用来释放互斥体所占资源。

 3、线程的同步:

同步就是若干个线程等待某个事件的发生,当该事件发生时,一起开始继续执行。在Linux线程中用条件变量来实现同步。函数pthread_cond_init用来创建一个条件变量。pthread_cond_wait和pthread_cond_  TI mewait用来等待条件变量被设置,值得注意的是这两个等待调用需要一个已经上锁的互斥体mutex,这是为了防止在真正进入等待状态之前别的线程有可能设置该条件变量而产生竞争。pthread_cond_broadcast用于设置条件变量,即使事件发生,并使得所有等待该事件的线程不再阻塞。而pthread_cond_signal则是用解除某一个等待线程的阻塞状态。pthread_cond_destroy用来释放一个条件变量的资源。

 4.实例

下面我们还是以名的生产者/消费者问题为例来阐述Linux线程的控制和通信。一组生产者线程与一组消费者线程通过缓冲区发生联系。生产者线程将生产的产品送入缓冲区,消费者线程则从中取出产品。缓冲区有N 个,是一个环形的缓冲池。
 关于Linux下多线程编程技术学习总结_设计制作_RF/无线
 关于Linux下多线程编程技术学习总结_设计制作_RF/无线
 关于Linux下多线程编程技术学习总结_设计制作_RF/无线

64
46
0
67

相关资讯

  1. 1、《阳光之下》后,彭冠英跟“阿刚”演新戏!光看剧照粉丝急不可耐2127
  2. 2、《动物世界》被市场辜负?看到这三个问题应该就不会这么想了2036
  3. 3、包贝尔执导的电影定档,殷桃曾黎加盟,豪华阵容票房稳了611
  4. 4、蝙蝠女侠首曝定妆照,暗黑形象一脉相承269
  5. 5、金鸡奖影片《点点星光》深圳路演,跳绳冠军演绎“世界速度”1470
  6. 6、杂志零失误的张钧甯曝出最新封面示范秋冬流行的“枯叶色”搭配5035
  7. 7、两人同演《渴望》走红,如今一人成妈妈专业户,一人却早已不拍戏4273
  8. 8、每个少年的心里都住着一位狐妖,《玄夜狐影》给你一场聊斋梦4290
  9. 9、蒋梦婕加盟《一克拉梦想》黛玉变身荧屏励志女3212
  10. 10、时代审美、市场环境等更迭,为何新版《流星花园》有望再创经典?235
全部评论(0)
我也有话说
0
收藏
点赞
顶部