易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

几种linux内核文件的区别

vmlinux  编译出来的最原始的内核文件,未压缩。
zImage   是vmlinux经过gzip压缩后的文件。
bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzI ......

linux内核的一些预定义

所有的内核代码,基本都包含了linux\compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。
首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去 的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在 ......

【转】Linux RedHat as 5 vsftpd 安装配置管理

安装rpm包
配置:
重起vsftpd服务:service vsftpd restart
启动vsftpd服务:service vsftpd start
1. 匿名服务器的连接(独立的服务器)
修改/etc/vsftpd/vsftpd.conf配置文件一下项,没有则添加:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes
(切换目录时,显示目录下.message的内容)
Loca ......

编写嵌入式Linux应用层驱动程序

在研究某一样东西的时候,其实最重要的一点就是了解清楚它的作用,它对自己有没有用,以前刚刚进入大学的时候总是听某某师兄师姐在讲某个课程没啥用,不用认真学,结果自己有时候也把某些人的某些话当真了,再结果我在学习某些课程的时候就没把它当回事,总认为以后没什么用,等到自己大四时才知道那些个所谓的师兄师姐们的 ......

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

一.前言
  Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号