文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux多线程编程

Linux多线程编程

时间:2010-07-06  来源:星巴

1. 进程与线程的区别与联系 进程是系统中程序执行和资源管理的基本单位,每个进程都拥有自已的数据段、代码段和堆栈段,而线程是进程的基本调度单位,它们共享进程的资源,如内存地址空间、文件描述符和信号处理等,与进程比较而言,线程的使用大大减少上下文切换的开销,对这些特性做以下总结: a) 调度,线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 b) 并发性,对于基于内核线程的LinuxThread而言,进程和线程都可以并发执行 c) 拥有资源,进程是资源的拥有者,而线程是资源的使用者 d) 系统开销,线程的系统开销远小于进程 2. 线程分类 1. 用户级线程 2. 内核线程 Linux2.4中所使用的LinuxThread是基于内核线程1:1模型,存在用户态管理线程(?)对线程之间进行管理。Linux2.6重写内核线程框架,使用NPTL(Native POSIX Thread Library)线程库,其与LinuxThread应用二进制兼容,但没有使用管理线程,线程的管理直接放在核内进行。 3. Linux线程创建与退出(API) 不管是LinuxThread还是NPTL,用户空间的线程操作都是使用POSIX的Pthread线程库,因此具有良好的兼容性。 a) 线程的创建与退出  

/*创建线程*/

int pthread_create((pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg))

/*线程退出,注意不能用exit,因为exit是使调用进程终止*/
void pthread_exit(void *retval)

/*线程同步机制,将当前线程挂起,等待线程的结束*/
int pthread_join((pthread_t th, void **thread_return))

  4. 修改线程属性 a) 属性初始化  

int pthread_attr_init(pthread_attr_t *attr)

  b) 绑定属性   Linux采用1:1的线程机制,所谓绑定属性就是指一个用户线程固定地分配给一个内核线程,因为CPU时间片的调度是面向内核线程的,因此且有绑定属性的线程可以保证在需要的时候总有一个内核线程与之对应。而非绑定属性就是指用户线程和内核线程的关系不是始终固定的,而是由系统来控制分配的。

int pthread_attr_setscope(pthread_attr_t *attr, int scope)

scope:

PTHREAD_SCOPE_SYSTEM //绑定

PTHREAD_SCOPE_PROCESS //非绑定

  c) 分离属性   分离属性是用来决定一个线程以什么样的方式来终止自已,在非分离情况下,当一个线程结束时,它所占用的系统资源并没有被释放,也就是没有真正的终止。只有当pthread_join函数返回时,创建的线程才能释放自已占用的系统资源。 而在分离属性的情况下,一个线程结束时立即释放它所占用的系统资源。这里要注意的是,假如设置了一个线程的分离属性,而该线程运行又非常快,那么它可能在pthread_create函数返回之前就终止了,它终止后就可能将线程号和系统资源交给其它的线程使用,这时调用pthread_create的线程就得到了错误的线程号。

int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate)

detachstate:

PTHREAD_CREATE_DETACHED //分离

PTHREAD_CREATE_JOINABLE //非分离

4. 线程访问控制



相关阅读 更多 +
排行榜 更多 +
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />

飞行射击 下载