![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
Nik_Talk
AIOT架构师
展开
-
基于多线程的TCP并发服务器
多线程的TCP并发服务器的实现步骤:1,创建一个socket套接字2,绑定IP地址和端口信息到socket,使用函数bind()1)IP地址2)bind3,设置允许的最大连接数,使用函数listen()4,等待来自客户端的连接请求,使用函数accept()5,收发数据,用函数recv(),send()/sendto()或者read(),write()6,关闭网络连接,close开始:建...原创 2020-01-18 16:40:10 · 1304 阅读 · 0 评论 -
线程控制之高级属性——互斥量,锁等功能实现
内容:1,什么是一次性初始化?例子1:pthread_once函数的一次性初始化验证:#include"stdio.h"#include"unistd.h"#include"sys/types.h"#include"pthread.h"#include"stdlib.h"#include"string.h"pthread_once_t once = PTHREAD_ONCE...原创 2020-01-17 19:47:59 · 264 阅读 · 0 评论 -
线程的控制之-线程同步(含读者与写者问题)及(生产者和消费者问题)
线程同步:1,进程同步的方法2,互斥量,读写锁,条件变量的区别3,合理同步,避免死锁<1>互斥量1)为什么要使用互斥变量?例子1:不加互斥量条件下,同一个共享变量(资源)在不同线程间苯调用,其值无法保证。导致结果不一;如下例全局共享变量变量i被线程1和线程2交叉调用会导致不同的输出结果;#include"stdio.h"#include"unistd.h"#...原创 2020-01-15 14:04:17 · 262 阅读 · 0 评论 -
多线程之线程的基本控制(含线程的创建和销毁等操作)
一,掌握线程的终止方式,线程的连接,退出操作,清理操作。二,线程的清理操作是如何进行的?【注】查看标准函数库的定义解释命令,如:man 3 exit1,线程终止1)exit是危险的:若进程中任意一个线程调用了exit(),_Exit(),_exit(),那么整个进程就会终止。2)不终止进程的退出方式:3)例子1;验证几种退出方式建立文件test_several_exits.c;在...原创 2020-01-14 18:53:41 · 579 阅读 · 0 评论 -
多线程之线程的概念及创建,回收
一,多线程之线程的概念1,掌握先线程的基本概念,了解线程的优势进程:资源分配的最小单位。由于进程是资源的所有者;创建,撤消和切换资源都由进程来进行,涉及较大的时空开销以及多处理机(SMP)的出现。又因为一个进程包含多个线程这些线程可以共享同时享有该进程的资源,故引入线程。线程:称为轻量级进程,程序执行的最小单位,系统独立调度和分配cpu的基本单位。线程的优势:1)可同时共享一个资源(cpu...原创 2020-01-13 19:06:52 · 421 阅读 · 0 评论 -
进程通信之IPC通信对象——信号灯
进程间通过信号灯的通信。信号灯的创建函数semget():信号灯的删除函数semctl():例子1:信号灯的创建和删除,通过semget函数创建,调用semctl函数删除。#include"sys/types.h"#include"signal.h"#include"unistd.h"#include"stdio.h"#include"stdlib.h"#include"s...原创 2020-01-13 01:43:18 · 425 阅读 · 0 评论 -
进程通信之IPC通信对象——信息队列
IPC通信------IPC对象:1,共享内存,2,消息队列3,信号灯。2,消息队列(链式队列)msgget()创建函数的解析:msgctl()释放函数的解析:例子1:利用msgget()函数创建消息队列,再用msgctl()删除消息队列;创建creat_delete_massegeque.c,代码如下:#include"unistd.h"#include"sys/types.h"...原创 2020-01-11 23:56:45 · 350 阅读 · 0 评论 -
进程通信之IPC通信对象——共享内存
IPC通信------IPC对象:1,共享内存,2,消息队列3,信号灯。IPC对象1,共享内存例子1,利用shmget()函数创建共享内存;建立shmid.c文件,内容如下#include"system/types.h"#include"sys/shm.h"#include"signal.h"#include"unistd.h"#include"stdio.h"#inclu...原创 2020-01-11 13:30:22 · 354 阅读 · 0 评论 -
进程通信之对象-信号通信
查看内核可以发送多少种信号的命令:kill -l每种信号代表不同的功能和意义。杀死某个进程是命令:kill [进程号] [pid]1,信号的发送:kill(),raise(),alam()等函数2,信号的接收:pause() sleep() while()3,信号的处理: signal()1,信号的发送例子1:用kill()函数实现kill命令功能;建立mykill()文件,内容如下。#...原创 2020-01-10 01:18:36 · 208 阅读 · 0 评论 -
进程通信之对象-有名管道
由于无名管道的缺点,从而产生有有名管道(管道=队列):在系统中存在这样一个文件节点。作用:实现非父子或有亲缘关系的进程之间的通信。【注】只有文件节点不占磁盘空间的有:有名管道,字符设备,块设备,套接字。例子1:有名管道的创建,调用mkfifo()函数。#include"stdio.h"#include"unistd.h"#include"stdlib.h"int main...原创 2020-01-09 17:59:34 · 180 阅读 · 0 评论 -
进程通信之对象-无名管道
无名管道(管道=队列):在系统中无不存在这样一个文件名例子1:用pipe()函数创建一个无名管道,实现一个进程向管道中读写信息;建立no_name_pipe1.c内容如下#include"unistd.h"#include"sdtio.h"#include"stdlib.h"#include"string.h"int main(){ int fd[2]; int...原创 2020-01-09 17:57:59 · 222 阅读 · 0 评论 -
进程管理之进程状态
原创 2020-01-06 15:48:15 · 129 阅读 · 0 评论