易截截图软件、单文件、免安装、纯绿色、仅160KB

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_timewait
用来等待条件变量被设置,值得注意的是这两个等待调用需要一个已经上锁的互斥体
mutex
,这是为了防止在真正进入等待状态之前别的线程有可能设置该条件变量而产生竞争。
pthread_cond_broadcast
用于设置条件变量,即使事件发生,并使得所有等待该事件的线程不再阻塞。而
pthread_cond_signal
则是用解除某一个等待线程的阻塞状态。
pthread_cond_destroy
用来释放一个条件变量的资源。
4
、生产者——消费者多线程技术实现:
&nbs


相关文档:

Vmware里Linux在x windows与虚拟终端之间切换方法

    当我们在Vmware或者其他虚拟机中安装Linux后,想在X
Windows与虚拟终端之间切换时,却发现Ctrl+Alt+Fx不起作用,那么我们如何解决这个问题呢?其实方法很简单,我们只需要将Vmware或
者其他虚拟机软件的热键改成Ctrl+Alt+Shift即可,如Vmware具体方法如下:中文版——选择编辑—&mdash ......

Linux的Shell编程 运行Shell程序的方法

用户可以用任何编辑程序来编写Shell程序。因为Shell程序是解释执行的,所以不需要编译成目的程序。按照Shell编程的惯例,以 bash为例,程序的第一行一般为“#!/bin/bash”,其中 # 表示该行是注释,叹号 ! 告诉Shell运行叹号之后的命令并用文档的其余部分作为输入,也就是运行/bin/bash并让/bin/bash去执行Shel ......

将Linux代码移植到Windows的简单方法(1)

一.前言
  Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植 ......

将Linux代码移植到Windows的简单方法(2)

经过上述的几个步骤。第一个目标,代码能够编译通过基本上是不会有什么问题的。只要把握好二个修改代码的基本原则,第一。引入新的代码,而不修改原有的代码。在没有办法进行调试前修改源代码是不允许的,修改的不好就会引起最后代码运行逻辑的混乱,而且在代码能够运行之前是很难发现问题的。所以除非非常有把握,否则不要 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号