我们之前讲了进程,今天我们重新认识另外一个概念---线程。我们首先会想到的是进程和线程有什么区别和联系,对吧?进程是由程序执行起来,跑在操作系统的,是系统进行资源分配和调度的基本单位。进程具有资源独占性,进程是只有通过进程间通信才能进入临界区享受临界资源,访问同一块地址空间。而线程是什么呢?线程最大的特点就是资源共享,在同一个进程中,各个线程之间资源是共享的。说到这里,我就举一个现实生活中最普遍的例子吧~~

大家无时无刻不在用qq吧!(可能说的有点夸张,但是还好还好)当你在计算机上运行qq这个进程时,可能会同时有多个好友给你发送消息,然而你也可以同时接收到那些消息,我们就可以把多个好友发送消息称为多个线程。当然进程就是qq啊,微信啊,在计算机上运行的称为多个进程。

线程和进程类似,也有创建线程,线程终止,线程等待。

1、创建线程

创建进程例子:

运行结果:

结果中输出main pthread run!说明主线程创建成功。

2、线程终止

在进程终止时,我们直接用exit就可以使进程退出。在这里,线程终止可以用exit吗?看一下这个例子:

运行结果:

看看这个结果,显然当你要退出子线程的时候,若用exit,会使整个进程都终止,但是我们并不想让它的主线程也终止。

下面就来介绍一下线程终止的几种方式:

①退出线程,需要从线程中return,则该线程退出;

②退出线程,可以用pthread_exit,终止该线程;

③用pthread_cancel取消该线程。

我们一一作以讲解吧~

运行结果:

用return返回子线程可以达到预期的效果,而且不影响主线程的运行;在这里子线程退出后,主线程每隔三秒打一次。

运行结果:

这个例子通过pthread_exit也可以使子进程终止。

运行结果:

在这里,thread线程被别的线程调用pthread_cancel异常终止掉。

★那么线程间是如何通信的呢?

我们可以设置一个全局变量。

比如:

运行结果:

这个程序执行的功能是使主线程和子线程交替运行,让主线程sleep三秒,子线程sleep一秒;这里还说明了一个问题,用一个全局变量来使线程通信,共享同一份资源,当子线程中的count改变的时候主线程中的count也随之改变。

这是线程的一部分哦,,在下次写线程(2)的时候再介绍其他内容吧~~

linux之多线程(1)相关推荐

  1. linux C 多线程编程

    文章目录 多线程的一些小知识: 1创建线程 pthread_create 2线程挂起 pthread_join 3线程终止 pthread_exit 4线程分离 pthread_detach 5线程取 ...

  2. [转]Linux 的多线程编程的高效开发经验

    Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们 ...

  3. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...

    基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF 第 卷 第 期 电子设计工程 年 月 基于 的多线程池并发 服务器设计 陈 涛 任海兰 武汉邮电科学研究院 湖北 武汉 摘要 时至今 ...

  4. Linux环境多线程编程基础设施

    Linux环境多线程编程基础设施 来源:Yebangyu 本文介绍多线程环境下并行编程的基础设施.主要包括: Volatile __thread Memory Barrier __sync_synch ...

  5. Linux 的多线程编程的高效开发经验

    背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文 ...

  6. Linux C++多线程同步的四种方式

    目录 一.互斥锁 二.条件变量 三.读写锁 原文链接:Linux C++多线程同步的四种方式(非常详细)_Y先森0.0-CSDN博客 背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通 ...

  7. linux多线程 消费者,linux c 多线程 生产者-消费者二

    linux c 多线程 生产者--消费者2 实在不好意思,第一个版本有些问题,是局部变量和堆里面变量的区别.今天做了一下修改.代码如下. #ifndef _LIST_H_ #define _LIST_ ...

  8. linux线程多参数传递参数,Linux中多线程编程并传递多个参数

    解析Linux中多线程编程并传递多个参数 Linux中多线程编程并传递多个参数实例是本文讲解的内容,不多说,先来看内容. Linux下的多线程编程,并将多个参数传递给线程要执行的函数. 以下是实验程序 ...

  9. linux的多任务 多进程,浅谈linux模拟多线程崩溃和多进程崩溃

    结论是: 多线程下如果其中一个线程崩溃了会导致其他线程(整个进程)都崩溃: 多进程下如果其中一个进程崩溃了对其余进程没有影响: 多线程 #include #include #include #incl ...

  10. 对linux中多线程编程中pthread_join的理解

    对linux中多线程编程中pthread_join的理解 分类: 程序员面试 linux学习2013-08-04 21:32 234人阅读 评论(0) 收藏 举报 多线程linuxpthread_jo ...

最新文章

  1. addslashes 及 其他 清除空格的方法是不安全的
  2. Matlab调用Java类访问数据库
  3. optee的共享内存的介绍
  4. Vue 3 都 RC 了,前端的你还不来看看
  5. emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权
  6. Excel如何处理x,y坐标的合并
  7. 高性能迷你React框架anujs1.0.8发布
  8. 1085 Perfect Sequence(25 分)
  9. 【OpenCV 例程200篇】201. 图像的颜色空间转换
  10. win7电脑怎么录屏?如何使用电脑录屏软件
  11. python视频教程全集免费-Python免费视频教程
  12. java 多线程 银行排队_3.采用多线程模拟银行排队叫号
  13. Kafka-3.0.1-Docker+集群 踩坑笔记
  14. 快来喝杯Java(初级第一章)
  15. Lucky Kat LAND — NFT 系列发售
  16. SpringBoot项目H5界面手机拍照调用腾讯云OCR卡证识别接口完整例子
  17. 常用运行命令win10
  18. 支持向量机专题——线性可分支持向量机
  19. 关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase
  20. 安装linux软件包

热门文章

  1. Numpy数组的保存与读取方法
  2. hihocoder-Week173--A Game
  3. JavaScript下的进制转换
  4. 拓扑排序最长链-P3119 [USACO15JAN]草鉴定Grass Cownoisseur
  5. CAlayer层的属性
  6. Notepad++高亮AS文件
  7. 用java单源最短路径问题_单源最短路径-贪心算法
  8. linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)
  9. pythondocumentation是什么_怎样阅读Python官方文档
  10. python 修改array_python 基础_ 数组的 增删改查3