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条)