多线程/多进程编程
ch3rry
每天早上醒来,看见你和阳光都在,这就是我想要的未来。
展开
-
线程通信&进程通信
进程和线程的区别: 对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品。 而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列。 共同点: 它们都能提高程序的并发度,提高程序运行效率和响应时间。线程和进程在使用上各有优缺点。 线程执行开销比较小,但不利于资源的管理和保护,而进程相反...原创 2019-10-29 16:46:59 · 241 阅读 · 0 评论 -
线程、进程概念
一、进程间的通信方式 管道( pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 有名管道(namedpipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其...原创 2019-04-19 22:50:18 · 139 阅读 · 0 评论 -
PV操作和信号量
对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数。 P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间。 V操作往仓库送货,如果仓库满了,线程等待,直到有P操作,从仓库中拿走货物,有空的位置。 创建信号量,设置容量,先有V操作,才能P操作。 P操作:货物个数减1,减过之后,货物个数大于等于0,...原创 2019-03-05 19:07:01 · 273 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱。我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程编程。 我们假...转载 2018-09-25 13:46:12 · 272 阅读 · 0 评论 -
windows下进程间通信
摘 要 随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。关键词 进程 进程通信 IPC Win32 API1 进程与进程通信 ...原创 2018-05-21 18:05:04 · 186 阅读 · 0 评论 -
进程间通信——信号、管道、消息队列、共享内存
多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程的进程id。对子进程来说,之所以fork返回0给它,是...原创 2018-05-21 18:02:48 · 245 阅读 · 0 评论 -
Linux下c语言多线程编程
引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 使用转载 2017-11-10 18:08:29 · 8658 阅读 · 1 评论 -
Mutex::AutoLock
互斥类—Mutex Mutex是互斥类,用于多线程访问同一个资源的时候,保证一次只有一个线程能访问该资源。在《Windows核心编程》①一书中,对于这种互斥访问有一个很形象的比喻:想象你在飞机上如厕,这时卫生间的信息牌上显示“有人”,你必须等里面的人出来后才可进去。这就是互斥的含义。 下面来看Mutex的实现方式,它们都很简单。 (1)Mutex介绍 其代码如下所示: [-->Threa原创 2015-11-26 11:10:45 · 522 阅读 · 0 评论 -
多线程CreateThread函数的用法及注意事项
当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 3分配context结构 4分配两页的物理存储以准备栈,保护页设置为PAGE_REA原创 2015-11-26 09:14:57 · 441 阅读 · 0 评论 -
作业、进程、线程
目录(?)[+] 1 基本概念2 进程 1 进程的概念主要有两点2 进程特征 3 进程和作业的区别4 进程和程序的区别3 进程的状态5 Windows 和linux进程6 进程通信 3 线程 1 线程的引入2 线程特征3 线程属性4 进程和线程的区别5 引入线程的好处6 用户级线程和内核支持线程较两种线程的优缺点 1. 基本概念 作业:用户在一次解决或原创 2015-09-23 15:11:06 · 644 阅读 · 0 评论