相关函数列表
//对两个线程ID进行比较 //若相等返回非0数值,否则返回0 #include <pthread.h> int pthread_equal(pthread_t tid1, pthread_t tid2); //获得线程自身的ID #include <pthread.h> pthread_t pthread_self(void); //创建新线程 //pthread_attr_t用来定制各种不同的线程属性,新线程函数从start_rtn函数的地址开始运行,如果 //要向start_rtn传递参数,需要将这些参数放入结构体中,然后将此将结构体地址作为arg参数传入 #include <pthread.h> int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*strt_rtn)(void *), void *restrict arg); //单个线程可以通过3种方式退出 //1.线程可以简单地从启动例程种返回,返回值是线程的退出码 //2.线程可以被同一进程中的其他线程取消 //3.线程调用pthread_exit #include <pthread.h> void pthread_exit(void *rval_ptr); //进程中的其他线程可以通过调用下列函数来访问这个 rval_ptr指针 //如果对线程的返回值不感兴趣,可以把rval_ptr设置为NULL,这样等于等待线程终止,但是不获取 //线程终止状态 #include <pthread.h> int pthread_join(pthread_t thread, void **rval_ptr); //线程取消 #include <pthread.h> int pthread_cancel(pthread_t tid); //可以安排一些清理函数,类似进程的atexit函数,这样的函数被称为线程清理处理程序(thread //cleanup handler),一个线程可以建立多个清理处理程序,其执行顺序和注册顺序相反 #include <pthread.h> void pthread_cleanup_push(void (*rtn)(void *), void *arg); void pthread_cleanup_pop(int execute); //分离线程 #include <pthread.h> int pthread_detach(pthread_t tid); //互斥量 //如果不希望被阻塞使用trylock函数,不出现阻塞直接返回0,否则就会失败不能锁住返回EBUSY //timelock函数指定一个绝对时间(在X到达之前可以阻塞,而不是等待Y秒) #include <pthread.h> int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); int pthread_mutex_destroy(pthread_mutex_t *mutex); int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_timedlock(pthread_mutex_t *restrict mutex, const struct timespec *restrict tsptr); //读写锁 #include <pthread.h> int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock); int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); int pthread_rwlock_timerdlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict tsptr); int pthread_rwlock_timewrlock(pthread_rwlock_t *restrict rwlock, const struct timespec *restrict tsptr); //条件变量 #include <pthread.h> int pthread_cond_init(pthread_cond_t *restrict cond, const pthread-condattr_t *restrict attr); int pthread_cond_destroy(pthread_cond_t *cond); int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex *restrict mutex); int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict tsptr); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); //自旋锁 #include <pthread.h> int pthread_spin_init(pthread_spinlock_t *lock, int pshared); int pthread_spin_destroy(pthread_spinlock_t *lock); int pthread_spin_lock(pthread_spinlock_t *lock); int pthread_spin_trylock(pthread_spinlock_t *lock); int pthread_spin_unlock(pthread_spinlock_t *lock); //屏障 #include <pthread.h> int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restrict attr, unsigned int count); int pthread_barrier_destroy(pthred_barrier_t *barrier); int pthread_barrier_wait(pthread_barrier_t *barrier);
注意事项
不要用直接操作pthread_t结构体
这样会导致代码不可移植,初始化结构体后,用相关函数操作
同样,pthread.h中的其他结构体也不要直接操作,初始化好之后用相关函数操作
因为pthread不是linux的标准库,所以GCC编译时,需要加上 -lpthread参数
进程和线程原语的比较
进程原语 | 线程原语 | 描述 |
fork | pthread_create | 创建新的控制流 |
exit | pthread_exit | 从现有的控制流中退出 |
waitpid | pthread_join | 从控制流中得到退出状态 |
atexit | pthread_cancel_push | 注册在退出控制流时调用的函数 |
getpid | pthread_self | 获取控制流的ID |
abort | pthread_cancel | 请求控制流的非正常退出 |
参考
相关推荐
在Unix环境中,线程控制是高级编程中的一个重要概念,它涉及到多线程程序的设计和管理。线程控制允许程序员在单个进程中同时执行多个独立的执行流,从而提高程序的并发性和效率。以下是对《Unix环境高级编程》第十二...
《UNIX环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,主要针对那些希望深入理解UNIX操作系统,并能熟练进行系统级编程的读者。这本书详细介绍了在UNIX系统上编写高效、可靠的程序所需的各种技术和方法...
《UNIX环境高级编程》是一本深入探讨UNIX系统编程的权威参考书籍。它涵盖了UNIX编程的各个方面,从基础的UNIX系统结构和原理,到文件操作、进程控制、进程间通信、多线程编程、网络编程以及终端I/O和伪终端等内容。...
《Unix环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,主要涵盖了在Unix操作系统环境下进行高级编程的各种技术和方法。这本书分为多个章节,详细讲解了Unix系统接口、进程管理、文件系统、网络通信等...
《UNIX环境高级编程(第3版)》在保持前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系...
### Unix环境高级编程 第三版 知识点详解 #### 一、书籍概述与目标读者 《Unix环境高级编程》第三版是一本针对高级程序员和网络专业人士编写的实用参考书。该系列书籍由Addison-Wesley出版社创建于1990年,旨在为...
《UNIX环境高级编程》是Unix系统编程领域的一本经典之作,被誉为“圣书”,对于学习Linux开发技术的人员来说,是一本不可或缺的参考书。这本书深入讲解了在Unix环境下进行系统级编程的各种技术和细节,涵盖了从基本...
《UNIX环境高级编程》(第三版) 是一本深入讲解UNIX操作系统编程的经典著作,它由W. Richard Stevens撰写,是IT行业内广泛使用的参考资料。这本书详细介绍了如何在UNIX系统上进行高级程序设计,涵盖了从系统调用、...
- **高级编程技术**:本书重点介绍了Unix/Linux环境下的高级编程技术,包括进程管理、线程控制、网络编程等方面的内容。 #### 3. **关键章节概览** - **进程管理**:详细讲解了如何创建和管理进程,包括进程间的...
《UNIX环境高级编程》与《UNIX网络编程卷1:协议》是两本深入解析UNIX系统编程的经典著作。在深入理解这些书籍的知识点之前,我们先要了解UNIX系统的基础概念。 UNIX是一个多用户、多任务的操作系统,其设计哲学...
《UNIX环境高级编程》详细介绍了POSIX线程库(pthread)的使用,包括线程的创建、同步、调度和取消。通过掌握线程的概念和API,开发者可以编写出高效并发的UNIX应用程序。 ### 信号处理 信号是UNIX系统中进程间...
《Unix环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,由W. Richard Stevens著述,详尽地阐述了在Unix操作系统环境下进行系统级编程的各种技术和方法。这本书旨在帮助读者深入理解Unix系统的内部工作...
《UNIX环境高级编程》是一本深受程序员和系统管理员喜爱的经典之作,主要针对那些希望深入理解UNIX操作系统,并希望在该环境中进行高效开发和系统管理的读者。这本书覆盖了UNIX系统的诸多核心概念和技术,包括进程...
《Unix环境高级编程》第三版是关于Unix系统编程的一部经典作品,它被誉为Linux系统编程的神书。在讨论这本书时,我们需要了解它所涵盖的广泛知识点和它在Unix系统编程领域中的重要性。 首先,Unix系统编程涉及在...
《UNIX环境高级编程》中文第三版是一本深受程序员和系统管理员喜爱的经典著作,它深入浅出地介绍了在UNIX操作系统环境下进行程序开发的各种技术与实践。这本书涵盖了从基本的文件I/O到复杂的进程间通信,从信号处理...
UNIX环境高级编程通常涉及的内容包括UNIX系统的系统调用、标准I/O库、进程控制、信号处理、线程控制、守护进程的创建与管理、时间和日期处理、文件和目录操作、以及网络编程等多个方面。这些知识点几乎涵盖了UNIX...
在深入探讨"UNIX环境高级编程"这一主题之前,我们首先要理解UNIX系统的基础。UNIX是一种多用户、多任务的操作系统,最初由贝尔实验室的Ken Thompson、Dennis Ritchie等人开发。这个系统以其强大的命令行界面、丰富的...
《UNIX环境高级编程》是Unix系统开发领域的一本经典著作,尤其对于想要深入理解Unix操作系统以及如何在其上进行系统级编程的开发者来说,这是一本不可或缺的参考书。该书的英文第二版提供了完整的源代码,这对于学习...