这篇文章总结下 Linux 中多线程编程中能用到的几个函数,当然,需要同步操作的时候还需要加锁的操作,这里,没有列举的这么具体,只是把最常用的函数介绍下。

在编写多线程程序在编译的时候需要加上 -lpthread,因为用到了 pthread 库。

/**头文件:#include <pthread.h>功能:创建一个线程参数:tid : 用于返回线程 idattr : 设置线程的属性,如线程优先级,初始栈大小等,一般使用默认值,即 NULLfunc :线程执行函数,从定义中可以看出,它返回 void* 类型,参数也是 void* 类型arg :传递给线程的参数,如果参数不止一个,需要用结构体传递返回值:执行成功返回 0, 执行失败返回一个非 0 值
*/
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);/**头文件:#include <pthread.h>功能:等待一个线程,类似于 wait4() 函数,即用于释放线程所占的资源参数:tid :指定要等待的线程 idstatus :用于带回线程的返回值返回值:执行成功返回 0, 执行失败返回一个错误编码
*/
int pthread_join (pthread_t tid, void ** status);/**头文件:#include <pthread.h>功能:用于返回当前线程的 id返回值:线程 id注: typedef unsigned long int pthread_t;
*/
pthread_t pthread_self (void);/**头文件:#include <pthread.h>功能:分离线程,类似于把一个进程变成后台进程,即脱离当前的控制终端,那么,我们就不需要调用 pthread_join 函数去等待这个线程的执行结束参数:tid :需要分离的线程 id返回值:执行成功返回 0, 执行失败返回一个错误编码
*/
int pthread_detach (pthread_t tid);/**头文件:#include <pthread.h>功能:一般在线程执行函数的最后添加这么一条语句,也可以不写,代表写线程生命周期的结束,注意,线程执行函数的最后不能写 exit 函数,因为,这样会使整个进程结束,当进程结束时,由于会回收整个地址空间,而线程是共享进程地址空间的,所以,进程内所有的线程都会终止,会成为程序的一个 BUG参数:用于带回线程结束的返回值
*/
void pthread_exit (void *status);

最后,给出一个利用这些函数的例子:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>#define THREAD_COUNT       2void   dlut_print_thread_id();
void *  dlut_thread_func(void *arg);int main(int argc, char **argv, char **environ)
{int i = 0;pthread_t tid[THREAD_COUNT];void *status;for (i = 0; i != THREAD_COUNT; i++){pthread_create((pthread_t *)&tid[i], NULL, dlut_thread_func, (void *)"BruceZhang");}for (i = 0; i != THREAD_COUNT; i++){pthread_detach(tid[i]);}sleep(1);return 0;
}void dlut_print_thread_id(char *s)
{pthread_t tid;tid = pthread_self();printf("%s : this new thread's id is %d\n", s, (int)tid);return;
}void * dlut_thread_func(void *arg)
{dlut_print_thread_id((char *)arg);return (void *)0;
}

Linux 多线程编程相关推荐

  1. ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程

    为什么线程同步的时候pthread_cond_t要和pthread_mutex_t同时使用 (2009-10-27 11:07:23) 转载▼ 标签: 杂谈 分类: 计算机 举一个例子(http:// ...

  2. linux查询某域线程是否满了,Linux多线程编程的时候怎么查看一个进程中的某个线程是否存活...

    pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal.还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用sig ...

  3. linux线程 ppt,Linux多线程编程多核编程.ppt

    <Linux多线程编程多核编程.ppt>由会员分享,可在线阅读,更多相关<Linux多线程编程多核编程.ppt(28页珍藏版)>请在装配图网上搜索. 1.Linux多线程编程, ...

  4. 多核程序设计 linux,多核程序设计Linux多线程编程.ppt

    Linux多线程编程,IEEE POSIX 标准 p1003.1c (Pthreads) 定义了处理线程的一系列C 语言类型的API. 在Linux中,线程一般被认为是"轻量级的进程&quo ...

  5. Linux 多线程编程(实现生产者消费者模型)

    Linux 多线程编程 线程分类 线程按照其调度者可以分为用户级线程和内核级线程两种. 内核级线程 在一个系统上实现线程模型的方式有好几种,因内核和用户空间提供的支持而有一定程度的级别差异.最简单的模 ...

  6. Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...

  7. c/c++ Linux多线程编程

    Linux多线程编程 线程概念 线程是指运行中的程序的调度单位.一个线程指的是进程中一个单一顺序的控制流,也被称为轻量级线程.它是系统独立调度和分配的基本单位.同一进程中的多个线程将共享该系统中的全部 ...

  8. Linux多线程编程-互斥锁

    互斥锁 多线程编程中,(多线程编程)可以用互斥锁(也称互斥量)可以用来保护关键代码段,以确保其独占式的访问,这有点像二进制信号量.POSIX互斥锁相关函数主要有以下5个: #include <p ...

  9. 详解Linux多线程编程

    前言 线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步.互斥,这些东西将在本文中介绍.我在某QQ群里见到这样一道面试题: 是否熟 ...

最新文章

  1. Linux(9)用户、组和权限管理
  2. Android 无法监听安装,Android关于apk安装成功广播监听
  3. 解决Jupyter notebook安装后不自动跳转网页的方法
  4. 数据中心如何利用虚拟现实(VR)技术
  5. pt1000温度对照表_温度传感器的常用检测方法
  6. CloudFoundry的cf push命令执行后,背后发生了什么
  7. Javascript玩转Prototype(一)——先谈C#原型模式
  8. Ubuntu16.04 设置环境变量的方法
  9. java 多线程 选择题_Java多线程之三道多线程练习题
  10. fedora中linux改成英文,Fedora的英文界面下使用中文
  11. 91年转行前端开发,是不是不该转,有啥风险?
  12. modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了
  13. 使用 Python SimpleHTTPServer 快速共享文件
  14. 汇编语言程序设计技巧详解(附例题)
  15. 计算机指令的操作码和地址,操作码和地址码
  16. 人工智能行业现状与未来发展趋势
  17. 何新生的英语史(八)—看好莱坞学英语,就是这么简单 1
  18. 网络爬虫排除协议robots.txt介绍及写法详解.
  19. 2022全新抖音取图表情包小程序+创作者入驻+流量主
  20. 你会的还只有初级工程师的技术吗?灵魂拷问

热门文章

  1. android 反编译apktool工具
  2. 解码转码---System.web.HttpUtility 对象分析
  3. eclipse外观设置
  4. 【世界上最优秀的逆向分析工具】IDA Pro6.1绿色版
  5. SD认证考题分布和复习要点(转摘)
  6. Networking 基本术语/概念
  7. Dapper基础知识一
  8. DevOps \u0026 SRE 必备技能清单
  9. CentOS 安装python3.6
  10. Google Palette算法详解以及OC化