Linux环境编程
文章平均质量分 53
主要包含进程、线程相关操作
45°的阳光
虽然你变秃了,但是你变强了
展开
-
管道——进程间通信
一、概念1.管道是什么?管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,是只存在于内存中的文件,本质是内核的一块缓冲。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。【注】管道是单向的、先进先出的、无结构的、固定大小字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。二、无名管道1.概念知识总结1>无名管道只能用于具有亲缘关系的进程之间的通信,通常一个管道由一个进程创建,然后实现两个进程间的通信时必须通过**fork**创建子进原创 2021-01-13 16:06:47 · 688 阅读 · 0 评论 -
消息队列——进程间通信方式
一、概念消息队列是由存放在内核中由消息组成的链表,由IPC id标识。用户可以在消息队列中添加和读取消息。特点:1.消息队列提供的是一种带有数据标识的特殊管道,因此可以选择性的读取信息;2.如果消息队列中有多条类型一样的消息,接收的时候只能按照先后顺序接收(队列特点);3.如果你接收的消息类型不存在,接收会阻塞。1.创建IPC键值创建IPC之前必须获取一个未使用的IPC键值(key);#include<sys/types.h>#include<sys/ipc.h>原创 2021-01-12 18:03:30 · 415 阅读 · 0 评论 -
信号量——pv操作
一、信号量概念信号量是用来解决进程/线程之间的同步互斥问题的一种通信机制,它表示代表某一类资源。1.信号量的类型a.无名信号量:无名信号量只能存在于内存中,要求使用信号量的进程必须能访问信号量所在的这一块内存,所以无名信号量只能应用在同一进程间的线程或者共享内存间的进程。b.有名信号量:用于进程(线程)间同步互斥1>有名信号量必须指定一个相关联的文件名称,名称通常是文件系统中的某个文件,无名信号量不需要指定2>有名信号量既可以用于线程间的同步,也可以用于进程间的同步;无名信号量通过s原创 2021-01-12 15:06:02 · 9015 阅读 · 1 评论 -
c语言实现一个线程池——附程序demon,可编译执行
备注:线程池学习时阅读的博客连接初学线程池,在网上找了大量的文章,阅读参考后,以开头链接为模板自己写了一个demon一、线程池介绍1.线程池的应用就是为了在需要大量线程创建、销毁时提高程序的执行效率而出现的2.线程池重要的一个知识就是对队列的引用,通过读取队列的数据去执行队列中的任务,通过队列的数量判断是否需要创建、销毁线程!c语言创建队demon二、线程池demon示例#include<stdio.h>#include<stdlib.h>#include<pt原创 2020-08-28 15:05:52 · 351 阅读 · 0 评论 -
pthread_cond_broadcast与pthread_cond_signal的区别——linuxc
pthread_cond_signal——唤醒睡眠的线程,一次只能唤醒一个线程pthread_cond_broadcast——唤醒睡眠的线程,一次唤醒所有睡眠的线程demon1——pthread_cond_signal#include <stdio.h>#include <pthread.h>static pthread_t thread1;static pthread_t thread2;//静态初始化static pthread_mutex_t lock=PT原创 2020-08-11 16:05:10 · 1487 阅读 · 0 评论 -
c语言线程唤醒机制——pthread_cond_wait
一、pthread_cond_wait()唤醒函数讲解1.函数原型讲解头文件#include <pthread.h>函数int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);函数功能:实现线程的睡眠参数1:条件锁参数2:互斥锁二、程序demon#include <stdio.h>#include <pthread.h>pthread_t atte原创 2020-08-02 15:32:09 · 4136 阅读 · 2 评论 -
进程间通讯方式-共享内存使用shmget、shmat、shmdt、shmctl讲解
进程间通讯方式——共享内存共享内存是一种最为高效的进程间通讯方式,进程可以直接读写内存,不需要任何数据的复制。共享内存的实现主要分为俩个步骤1-创建共享内存 shmget(); 2-映射共享内存shmat(); 当然还有撤销操作shmdt();为了使创建的共享内存使用时区分开来,可以用对应的IPC键值来一一对应一、相关函数介绍1.创建IPC键值#include <sys/types.h>#include <sys/ipc.h>key_t ftok(const cha原创 2020-07-19 18:06:21 · 852 阅读 · 1 评论 -
线程-互斥锁的使用
一、线程间通信-互斥1.临界资源:一次只允许一个任务2.临界区:访问临界区的代码3.互斥机制----1>mutex互斥锁2>锁的使用过程:任务访问临界资源前申请锁,访问完释放锁二、函数介绍1.互斥锁的初始化方法1:动态方式创建互斥锁#include<pthread.h>int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);返回原创 2020-07-18 17:24:22 · 457 阅读 · 0 评论 -
线程基础概念及pthread_cancel的使用
一、进程1.进程有独立的地址空间2.进程在创建时都会创建一个task_struct结构体3.每个进程都会参与内核调度,相互间不会影响二、线程1.因为进程在切换时系统开销大,所以很多操作系统引入了轻量级进程LWP-线程2.同一进程中的线程共享相同的地址空间,所以线程通常是指共享相同地址空间的多个任务三、线程共享和和私有的资源共享资源:1.可以执行的命令2.用户ID,用户组ID3.静态数据4.当前的工作目录5.进程中打开的文件描述符私有资源:1.线程ID2.pc(程序计数器)和相原创 2020-07-18 16:41:24 · 278 阅读 · 0 评论