linux下的多线程机制的分析与实现

linux下的多线程机制的分析与实现

ID:32326091

大小:54.50 KB

页数:4页

时间:2019-02-03

linux下的多线程机制的分析与实现_第1页
linux下的多线程机制的分析与实现_第2页
linux下的多线程机制的分析与实现_第3页
linux下的多线程机制的分析与实现_第4页
资源描述:

《linux下的多线程机制的分析与实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux下的多线程机制的分析与实现刘井权1王宪1周卫云2(1江南大学通信与控制工程学院2无锡梅格科技有限公司江苏无锡214122)摘要介绍linux线程的基本概念,线程间的互斥和同步机制,分析了linuxpthread库的API函数,并结合一个例子阐述多线程编程的核心技术,最后总结出多线程编程应注意的事项。关键词线程同步互斥linuxpthreadAbstractThebasicconceptionofLinuxthread、mutexandsynchronizationmechanismbetw

2、eenthreadsisintroduced,APIfunctionsofthelinuxpthreadlibraryisanalysed,andmultithreadingprogrammingcoretechnologyisexpatiatedbygivingaexample.Atlastthenoticeswhenprogrammingissummarized.Keywordsthreadsynchronizationmutexlinuxpthread中图分类号:TP316文献标识码:A1.引

3、言目前,许多流行的多任务操作系统都提供线程机制,线程就是程序中的单个顺序控制流。利用多线程进行程序设计,就是将一个程序(进程)的任务划分为执行的多个部分(线程),每一个线程为一个顺序的单控制流,而所有线程都是并发执行的,这样,多线程程序就可以实现并行计算,高效利用多处理器。线程可分为用户级线程和内核级线程两种基本类型。用户级线程不需要内核支持,可以在用户程序中实现,线程调度、同步与互斥都需要用户程序自己完成。内核级线程需要内核参与,由内核完成线程调度并提供相应的系统调用,用户程序可以通过这些接口函数

4、对线程进行一定的控制和管理。Linux操作系统提供了LinuxThreads库,它是符合POSIX1003.1c标准的内核级多线程函数库。在linuxthreads库中提供了一些多线程编程的关键函数,在多线程编程时应包括pthread.h文件。2.LinuxThread中的关键库函数2.1线程的创建和终止intpthread_create(pthread_t*pthread,constpthread_attr_t*attr,void*(*start_routine(*void)),void*arg)

5、;调用此函数可以创建一个新的线程,新线程创建后执行start_routine指定的程序。其中参数attr是用户希望创建线程的属性,当为NULL时表示以默认的属性创建线程。arg是向start_routine传递的参数。当成功创建一个新的线程时,系统会自动为新线程分配一个线程ID号,并通过pthread返回给调用者。voidpthread_exit(void*value_ptr);调用该函数可以退出线程,参数value_ptr是一个指向返回状态值的指针。2.2线程控制函数pthread_self(vo

6、id);为了区分线程,在线程创建时系统为其分配一个唯一的ID号,由pthread_create()返回给调用者,也可以通过pthread_self()获取自己的线程ID。Intpthread_join(pthread-tthread,void**status);这个函数的作用是等待一个线程的结束。调用pthread_join()的线程将被挂起直到线程ID为参数thread指定的线程终止。intpthread_detach(pthread_tpthread);参数pthread代表的线程一旦终止,立即

7、释放调该线程占有的所有资源。2.3线程间的互斥互斥量和临界区类似,只有拥有互斥量的线程才具有访问资源的权限,由于互斥对象只有一个,这就决定了任何情况下共享资源(代码或变量)都不会被多个线程同时访问。使用互斥不仅能够在同一应用程序的不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。Linux中通过pthread_mutex_t来定义互斥体机制完成互斥操作。具体的操作函数如下pthread_mutex_init(pthread_mutex_t*mutex,constpt

8、hread_mutexattr_t*attr);初使化一个互斥体变量mutex,参数attr表示按照attr属性创建互斥体变量mutex,如果参数attr为NULL,则以默认的方式创建。pthread_mutex_lock(pthread_mutex_t*mutex);给一个互斥体变量上锁,如果mutex指定的互斥体已经被锁住,则调用线程将被阻塞直到拥有mutex的线程对mutex解锁为止。Pthread_mutex_unlock(pthread_mutex_t*mu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。