`
yesjavame
  • 浏览: 655903 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Linux 多线程编程入门--线程函数解释

阅读更多

创建线程:
intpthread_create(pthread_t*restrictthread,
constpthread_attr_t*restrictattr,
void*(*start_routine)(void*),void*restrictarg);
参数:
thread输出线程id
attr线程属性, 默认NULL
start_routine线程执行函数
arg线程执行参数
note:函数成功返回0 否则返回错误码
头文件 pthread.h
库文件 pthread
退出线程:
intpthread_exit(void* value_ptr);
参数:
value_ptr线程返回值指针
note: ptrhead_exit()退出调用此函数的线程并释放该线程占用的资源
头文件 pthread.h
库文件 pthread
等待指定线程结束:
intpthread_join(pthread_t thread,void**value_ptr);
参数:
thread一个有效的线程id
value_ptr接收线程返回值的指针
note:调用此函数的线程在指定的线程退出前将处于挂起状态或出现错误而直接返回
如果value_ptr非NULL则value_ptr指向线程返回值的指针
函数成功后指定的线程使用的资源将被释放
头文件 pthread.h
库文件 pthread
获取当前线程id:
pthread_t pthread_self(void);
参数:
note:返回当前函数的id
头文件 pthread.h
库文件 pthread
互斥:
说到多线程,最关心的就是数据访问/改变的同步问题。
windows下有临界区和信号事件等手段来防止多个线程同时读/写同一个数据,那么linux呢?
多线程变成时多使用互斥pthread_mutex_t来起到防止同时访问或改变同一数据.
创建互斥:
intpthread_mutex_init(pthread_mutex_t*restrictmutex,
constpthread_mutexattr_t*restrictattr);
参数:
mutex输出互斥id
attr互斥属性, 默认NULL
note:函数成功返回0 否则返回错误码
头文件 pthread.h
库文件 pthread
锁住互斥:
intpthread_mutex_lock(pthread_mutex_t*mutex);
参数:
mutex互斥id
note:如果指定的互斥id已经被锁住那么呼叫线程在互斥id完全解锁前将
一直处于挂起状态,否则将锁住互斥体
头文件 pthread.h
库文件 pthread
intpthread_mutex_trylock(pthread_mutex_t*mutex);
参数:
mutex互斥id
note:如果指定的互斥id已经被锁住那么将直接返回一个错误,通过判断
此错误来进行不同的处理
头文件 pthread.h
库文件 pthread
解锁互斥:
intpthread_mutex_unlock(pthread_mutex_t*mutex);
参数:
mutex互斥id
note:如果指定的互斥id已经被锁住那么对其解锁
头文件 pthread.h
库文件 pthread
释放互斥:
intpthread_mutex_destroy(pthread_mutex_t*mutex);
参数:
mutex互斥id
note:释放指定的mutex占用的资源
头文件 pthread.h
库文件 pthread
分享到:
评论

相关推荐

    linux多线程编程

    详细介绍了linux多线程编程用到的函数,解析,以及源代码,对pthread编程入门有很大帮助

    Linux多线程各个函数示例代码.zip

    本代码配套我的博客里的多线程编程, 这里系统性地进行讲解,附带每个知识点的代码,快速入门Linux的多线程编程! 博客地址:https://blog.csdn.net/weixin_40519315/article/details/104211643

    Linux多线程编程快速入门

    本文主要对Linux下的多线程进行一个入门的介绍,虽然是入门,但是十分详细,希望大家通过本文所述,对Linux多线程编程的概念有一定的了解。具体如下。 1 线程基本知识 进程是资源管理的基本单元,而线程是系统调度的...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...

    Unix环境高级编程(APUE)——linux入门必学

    书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第一阶段05讲、采用多线程方式模拟银行排队叫号.mp4 │ 高并发编程第一阶段06讲、用Runnable接口将线程的逻辑执行单元从控制中抽取出来.mp4 │ 高并发编程第一阶段07讲、策略模式在Thread和Runnable...

    posix 接口 入门资料

    内有如下资源。可用于参考或学习。 UNIX环境高级编程 linux多线程编程.doc Linux函数大全.chm POSIX.CHM POSIX多线程程序设计中文版.pdf

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    老王Python基础+进阶+项目篇(高清无密)

    进阶篇28-高性能的多线程网络资源访问第二节 进阶篇29-http相关讲解 进阶篇30-wsgi讲解 进阶篇31-进阶综合习题应用 进阶篇32-综合习题讲解 进阶篇33-进阶项目讲解第二节 进阶篇34-项目讲解第三节 老王Python教程 ...

    posix接口学习资料

    内含:UNIX环境高级编程,POSIX.CHM,linux多线程编程.doc,Linux函数大全.chm等,入门资料都有了。 由于空间原因,UNIX环境高级编程删掉了两章。

    嵌入式应用层开发要学习什么?

    精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,强化对Linux应用开发的理解和编码调试的能力,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库。 第四阶段嵌入式入门阶段-ARM...

    Linux程序设计 第4版.haozip01

    12.8 多线程 438 12.9 小结 442 第13章 进程间通信:管道 443 13.1 什么是管道 443 13.2 进程管道 444 13.3 将输出送往popen 445 13.3.1 传递更多的数据 446 13.3.2 如何实现popen 447 13.4 pipe调用 449 ...

    vc++ 开发实例源码包

    实现了自绘控件,云端控制主要在CnComm类多线程串口通讯库, camerads-DirectShow使用示例 演示了摄像头的使用 CatListBoxDemo ListBox控件与其它控件阙套使用方法 CCAMS系统是一种用于局域网下的CS模式的软件...

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    [14本经典Android开发教程] 8 Linux内核阅读心得体会 读核感悟 2 读核感悟 Linux内核启动 内核的生成 2 读核感悟 Linux内核启动 从hello world说起 3 读核感悟 Linux内核启动 BIOS 5 读核感悟 Linux内核启动 setup...

    Linux程序设计 第4版.haozip02

    12.8 多线程 438 12.9 小结 442 第13章 进程间通信:管道 443 13.1 什么是管道 443 13.2 进程管道 444 13.3 将输出送往popen 445 13.3.1 传递更多的数据 446 13.3.2 如何实现popen 447 13.4 pipe调用 449 ...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    熟悉后再一个函数一个函数地深入学习exosip提供的接口函数,就可以深入理解osip 了,达到间接学习oSIP的目的,同时也能从eXoSIP中学习到正确使用oSIP的良好的编程风格和语法格式。 而要成功编译...

    QT开发实例教程-入门必备

    Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其它功能,比如多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等,这些 Qt 都已经内置了。 Qt 是应用程序开发的一站式解决方案,...

    vc代码合集

    2012-06-11 10:37 151,588 多线程Java Socket编程示例.html 2012-06-11 09:46 56,832 存储管理动态分区分配算法的模拟.doc 2012-06-11 09:45 32,389 完整的串口通信程序VC++源码.7z 2012-06-11 10:41 2,183,866 对...

    精通qt4编程(源代码)

    \ 第10章 多线程 李立夏介绍了Qt的多线程处理,包括两方面内容:传统的线程操作,以及与Qt事件机制相关的操作。这一章还涉及较多的基本概念,并逐一做了介绍。 261 \ 第11章 事件机制 李立夏介绍了Qt的事件处理模型...

    宋劲彬的嵌入式C语言一站式编程

    目录 历史 前言 I. C语言入门 1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 ...3. 在Linux C编程中使用Unicode和UTF-8 B. GNU Free Documentation License Version 1.3, 3 November 2008 参考书目 索引

Global site tag (gtag.js) - Google Analytics