关于 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
、互斥锁
互斥锁用来保证一段时间内只有一个线程在执行一段代码。当在同一内存空间运行多
个线程时,为保证多个线程之间不相互破坏,要创建互斥量,如果一个线程已经锁定一个
互斥量,第二个线程又试图去锁定这个互斥量,则第二个线程被挂起(不占用任何 CPU 资
源),直到第一个线程解除对这个互斥量的锁定为止。第二个线程将被唤醒并继续执行,
同时锁定这个互斥量。
创建互斥量时,必须首先声明一个类型为 pthread_mutex_t 的变量,然后对其进行初始
化,结构 pthread_mutex_t 为不公开的数据类型,其中包含一个系统分配的属性对象。函数