关于Linux多线程编程

关于Linux多线程编程


2024年4月21日发(作者:)

关于Linux多线程编程

Linux线程分为两类,一是核心级支持线程,在核心级实现线程时,线程的实现依赖

于内核,无论是在用户进程中的线程还是系统进程中的线程,他们的创建、撤消、切换都

由内核实现。核心只有单线程进程概念,而多线程进程由与应用程序连接的过程库实现。

另一类线程是用户级线程,在Linux众多的线程库中,大部分实现的是用户级线程。

系统创建线程的顺序如下:当一个线程启动后,它会自动创建一个线程即主线程(main

thread)或者初始化线程(initial thread),然后就利用pthread_initialize()初始化系统管理

线程并且启动线程机制。

Linux线程编程基础

要创建一个多线程程序,必须加载pthread.h头文件。要掌握多线程编程常用的几个

函数:

1、创建新线程函数: pthread_create()

2、挂起当前线程函数: pthread_join()

3、线程注册的清除处理函数:pthread_exit()

4、取消一个线程函数: pthread_cancel()

5、挂起当前线程,直到满足某种条件: pthread_cond_init

1

多线程的同步

1、互斥锁

互斥锁用来保证一段时间内只有一个线程在执行一段代码。当在同一内存空间运行多

个线程时,为保证多个线程之间不相互破坏,要创建互斥量,如果一个线程已经锁定一个

互斥量,第二个线程又试图去锁定这个互斥量,则第二个线程被挂起(不占用任何CPU资

源),直到第一个线程解除对这个互斥量的锁定为止。第二个线程将被唤醒并继续执行,同

时锁定这个互斥量。

创建互斥量时,必须首先声明一个类型为pthread_mutex_t的变量,然后对其进行初

始化,结构pthread_mutex_t为不公开的数据类型,其中包含一个系统分配的属性对象。

函数pthread_mutex_init用来生成一个互斥锁。

锁定一个互斥量时使用函数pthread_mutex_lock(),它尝试锁定一个互斥量,如果该

互斥量已经被其它线程锁定,该函数就把调用自己的线程挂起,一旦该互斥量解锁,它将

恢复运行并锁定该互斥量。这个线程在做完它的事情后,必须释放这个互斥量,解除锁定

时使用函数pthread_mutex_unlock()。

用完一个互斥量后必须销毁它,这时没有任何线程再需要它了,最后一个使用该互斥

量的线程必须销毁它,销毁互斥量时使用函数pthread_mutex_destroy().

2、条件变量

互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。在某种情况下,例如,在

2


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713636764a2288589.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信