随笔分类 - Linux 网络编程
摘要:线程池的作用 用于执行大量相对短暂的任务 计算密集型任务 线程 = CPU个数 I/O密集型任务 线程 CPU个数 当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值 当任务执行完毕的时候,能够动态的销毁线程池中的线程 该线程池的实现本质上也是生产者与消费者模型的应用。生产者线程向任务
阅读全文
摘要:条件变量 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了 例如一个线程访问队列时,发现队列为空,它只能等待,只到其它线程将一个节点添加到队列中。这种情况就需要用到条件变量 条件变量和互斥锁为什么要配合使用? 1. 条件本身就是公共资源,多个线程同时方式时,必须使用互
阅读全文
摘要:POSIX信号量相关函数 sem_open sem_close sem_unlink sem_init sem_destroy sem_wait sem_post POSIX互斥锁相关函数 pthread_mutex_init pthread_mutex_lock pthread_mutex_unl
阅读全文
posted @ 2019-10-10 19:25
sfdevs
摘要:线程属性 初始化与销毁属性 获取与设置分离属性 获取与设置栈大小 获取与设置栈溢出保护区大小 获取与设置线程竞争范围 获取与设置调度策略 获取与设置继承的调度策略 获取与设置调度参数 获取与设置并发级别 仅在N:M线程模型中,设置并发级别,给内核一个提示;表示提供给定级别数量
阅读全文
posted @ 2019-10-10 16:44
sfdevs
摘要:POSIX线程库相关介绍 与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都有“pthread_”开头 要使用这些函数库,都需要加入头文件“”, 链接的时候需要链接“ lpthread” pthread_create pthread_exit
阅读全文
posted @ 2019-10-09 17:10
sfdevs
摘要:什么是线程 在一个程序里的一个执行路线就叫做线程(thread),更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程 进程与线程 进程是资源竞争的基本单位 线程是程序执行的最小
阅读全文
posted @ 2019-10-08 17:51
sfdevs
摘要:POSIX共享内存函数介绍 shm_open ftruncate fstat shm_unlink mmap POSIX共享内存示例 共享内存已经自动挂载到/dev/shm目录下 shm_open.c shm_write.c shm_read.c shm_unlink.c
阅读全文
posted @ 2019-10-08 15:49
sfdevs
摘要:POSIX消息队列相关函数 mq_open mq_close mq_unlink mq_getattr|mq_setattr mq_send mq_receive mq_notify POSIX消息队列示例 mq_open.c 对于SYSTEM IPC可以使用ipcs查看;对
阅读全文
posted @ 2019-10-08 14:34
sfdevs
摘要:用信号量解决生产者、消费者问题 实现shmfifo ip.h ip.c shmfifo.h shmfifo.c shmfifo_send.c include "shmfifo.h" typedef struct stu { int name[32]; int age; }STU; int main(
阅读全文
posted @ 2019-09-26 19:21
sfdevs
摘要:n哲学家进餐问题描述有五个哲学家,他们的生活方式是交替地进行思考和进餐,n哲学家们共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,n平时哲学家进行思考,饥饿时便试图取其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐,n进餐完毕,放下筷子又继续思考。 约束条件 (1)只有拿到
阅读全文
posted @ 2019-09-26 10:13
sfdevs
摘要:信号量 信号量和P、V原语由Dijkstra(迪杰斯特拉)提出 信号量: 互斥: P、V在同一进程中 同步: P、V在不同进程中 信号量值含义 S 0 : S表示可用资源个数 S=0 : 表示无可用资源,无等待进程 S include include include include include
阅读全文
posted @ 2019-09-25 15:22
sfdevs
摘要:共享内存数据结构 共享内存函数 shmget 结果 shmat shmdt shmget_write.c 结果 shmget_read.c shmctl 共享内存示例 shmget_write.c shmget_read.c
阅读全文
posted @ 2019-09-25 13:03
sfdevs
摘要:消息队列实现回射客户/服务器 msg_srv.c include include include include include include define ERR_EXIT(m) \ do \ { \ perror(m); \ exit(EXIT_FAILURE); \ } while (0)
阅读全文
posted @ 2019-09-24 17:16
sfdevs
摘要:msgsnd msgbuf 消息结构在两方面受制约: 它必须小于系统规定的上限值(MSGMAX) 它必须以一个long int长整数开始,接收者函数将利用这个长整数确定消息的类型
阅读全文
posted @ 2019-09-24 13:48
sfdevs
摘要:IPC对象的持续性 随进程持续 :一直存在直到打开的最后一个进程结束。(如pipe和FIFO) 随内核持续 :一直存在直到内核自举(内核自举就是把主引导记录加载到内存,并跳转执行这段内存)或显示删除(如System V消息队列、共享内存、信号量) 随文件系统持续 :一直存在直到显示删除,即使内核自举
阅读全文
posted @ 2019-09-24 09:40
sfdevs