Linux下线程的创建
作者:Hoyt Email:hoytluo@21cn.com原文地址 http://wiki.chinaunix.net/index.php/Zhuan_c7
前言: Linux下线程的创建和基本的使用
线程的同步和互斥
线程的条件变量
先介绍什么是线程.我们编写的程序大多数可以看成是单线程的.就是程序是按照一定的 顺序来执行.如果我们使用线程的话,程序就会在我们创建线成的地方分叉,变成两个"程 序"在执行.粗略的看来好象和子进程差不多的,其实不然.子进程是通过拷贝父进程的地 址空间来执行的.而线程是通过共享程序代码来执行的,讲的通俗一点就是线程的相同的 代码会被执行几次.使用线程的好处是可以节省资源,由于线程是通过共享代码的,所以没 有进程调度那么复杂.
1.线程的创建和使用
线程的创建是用下面的几个函数来实现的.
#include <pthread.h>
int pthread_create(pthread_t *thread,pthread_attr_t *attr,
void *(*start_routine)(void *),void *arg);
void pthread_exit(void *retval);
int pthread_join(pthread *thread,void **thread_return);
pthread_create创建一个线程,thread是用来表明创建线程的ID,attr指出线程创建时候 的属性,我们用NULL来表明使用缺省属性.start_routine函数指针是线程创建成功后开始 执行的函数,arg是这个函数的唯一一个参数.表明传递给start_routine的参数. pthrea d_exit函数和exit函数类似用来退出线程.这个函数结束线程,释放函数的资源,并在最后 阻塞,直到其他线程使用pthread_join函数等待它.然后将*retval的值传递给**thread_ return.由于这个函数释放所以的函数资源,所以retval不能够指向函数的局部变量. pt hread_join和wait调用一样用来等待指定的线程.注意由于线程不同于进程.所以线程的 退出一定要用pthread_exit而不是使用exit.否则整个程序会退出的. 下面我们使用一个 实例来解释一下使用方法.在实践中,我们经常要备份一些文件.下面这个程序可以实现当 前目录下的所有文件备份.备份后的后缀名为bak
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <pthread.h&
相关文档:
由于 Linux 良好的用户权限管理体系,病毒往往是 Linux 系统管理员最后才需要考虑的问题。以往,Linux 上的杀毒软件主要是为企业的邮件和文件服务器所设计的。如今,随着 Linux 桌面用户数量的增长,桌面用户在受益于 Linux 系统对病毒较强的天然免疫力的同时,也需要杀毒软件清理从网络或U盘带来的WIndows病毒。尽管那些 ......
什么是Socket
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 ......
M. Tim Jones, 顾问工程师, Emulex Corp.
2009 年 4 月 07 日
Linux® 内核使用 GNU Compiler Collection (GCC) 套件的几个特殊功能。这些功能包括提供快捷方式和简化以及向编译器提供优化提示等等。了解这些特殊的 GCC 特性,学习如何在 Linux 内核中使用它们。
GCC 和 Linux 是出色的组合。尽管它们是独立的软件 ......
接下来,我们进入sysfs部分。看看
kobject_add()->create_dir()->sysfs_create_dir()
bus create file->sysfs create file()
. . .
这些sysfs函数的内幕。
说白了,sysfs就是利用VFS的接口去读写kobject的层次结构,建立起来的文件系统。关于sysfs的内容就在fs/sysfs/下。&nbs ......
Ubuntu的许多操作是在终端中进行的,通过sudo命令治理的文件是由root
持有权限(默认用户没有权限运行和修改)的,一般用户是无法改变的。在图形界面上,我们可以通过属性中的权限选项夹进行操作。但是一旦文件的属性显示当前
用户没有读写权力时,无法在图形界面上修改权限。
常用方法如下:
(启动一个shell,键入命 ......