![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
小贾-同志
每一个不曾起舞的日子都是对生命的辜负
展开
-
这样回答【什么是线程安全】
文章目录【1】不是线程的安全【2】私有的东西就不该让别人知道【3】大家不要抢,人人有份【4】只能看,不能摸【5】没有规则,那就先入为主【6】互斥锁(悲观)【7】CAS(乐观)【1】不是线程的安全面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。切记望文生义。同理,“线程安全”也不...原创 2019-12-03 10:12:51 · 545 阅读 · 1 评论 -
【关于网络编程高并发问题的解决方案】
文章目录思路一:每个进程/线程处理一个连接(多进程/多线程思路二:每个进程/线程同时处理多个连接(IO多路复用)实现方式1:循环处理实现方式2:select实现方式3:poll实现方式4:epoll实现方式5:封装成库要解决这一问题,从纯网络编程技术角度看,主要思路有两个:【1】 一个是对于每个连接处理分配一个独立的进程/线程(即多进程和多线程);【2】 另一个思路是用同一进程/线程来同时...原创 2019-11-22 15:42:18 · 557 阅读 · 0 评论 -
【多进程多线程原理】
Linux的线程实现是在核外进行的,核内提供的是创建进程的接口do_fork()。内核提供了两个系统调用_clone()和fork(),最终都用不同的参数调用do_fork()核内API。 do_fork() 提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、CLONE_SIGHAND(共享信号句柄表)和CLO...原创 2019-11-22 11:15:32 · 457 阅读 · 0 评论 -
【网络编程】|| 基于TCP实现的简单HTTP服务器
文章目录原创 2019-07-26 12:31:27 · 2177 阅读 · 0 评论 -
【Linux】实现一个简单的shell命令解释器
文章目录【1】实现的功能【2】代码【3】运行结果【1】实现的功能我们所做的这个简单的shell命令解释器可以实现简单的常用的基本命令,如ls、pwd、cd、cd - 、cd ~ 等根据简单命令的定义,它的第一个参数是要执行的命令,后面的参数作为该命令的参数。要执行的命令有两种情况:一种是外部命令: 也就是对应着磁盘上的某个程序,例如 pwd、ls等等。对于这种外部命令,我们首先要到指定的...原创 2019-08-01 10:42:12 · 6949 阅读 · 33 评论 -
【Linux】使用信号量semaphore控制多个线程按序交替打印
文章目录【1】题目描述【2】问题分析【3】示例代码【4】运行结果【1】题目描述【2】问题分析我们可以使用信号量进行同步三个线程固定打印顺序如图所示:【3】示例代码#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include<...原创 2019-08-05 16:41:32 · 2327 阅读 · 0 评论 -
【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结
文章目录项目框架源代码项目框架源代码原创 2019-08-13 16:45:43 · 2314 阅读 · 2 评论 -
【转】|【Linux】线程同步-----条件变量
复习时看到这篇写的不错博客解决了自己的疑惑!!!----->>>linux 线程学习之条件变量原创 2019-09-15 19:24:37 · 178 阅读 · 0 评论 -
【转】 | 【面试复习:进程间通信】
原文链接—>进程间的五种通信方式介绍进程间通信的方式:进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket。1.管道:管道主要包括无名管道和命名管道:管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信1.1 普通管道PIPE:1)它是半双工的(即数据只能在一个方向上流动),具...原创 2019-10-03 21:26:50 · 165 阅读 · 0 评论 -
【I/O多路复用】select、poll、epoll的区别
文章目录原创 2019-07-22 13:46:31 · 1357 阅读 · 0 评论 -
【I/O多路复用】epoll系统调用的ET(Edge Trigger)模式
文章目录什么是LT和ET模式什么是LT和ET模式epoll对文件描述符的操作有两种模式 LT(LevelTigger)电平触发模式和ET (EdgeTrigger, 边沿触发)模式。LT模式是默认的工作模式,这种模式下cpoll相当于一 个效率较高的poll.当往epoll内核事件表中注册一个文件描述符上的EPOLET事件时,epoll将以ET模式来操作该文件描述符。ET模式是epoll的高...原创 2019-07-20 22:40:23 · 1569 阅读 · 0 评论 -
深入理解阻塞/非阻塞IO、同步/异步IO的区别
文章目录【1】同步、异步、阻塞和非阻塞的概念【2】阻塞IO模型【3】非阻塞IO模型【4】IO复用模型【5】信号驱动IO【6】异步IO模型【7】各种IO模型的比较【1】同步、异步、阻塞和非阻塞的概念同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。例如:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。异步:异步的概念和同步相...原创 2019-07-30 12:29:07 · 4055 阅读 · 2 评论 -
IPC(进程间通信) | 消息队列
文章目录消息队列的基本概念Linux的消息队列机制msgget函数msgctl函数msgsnd函数消息队列的基本概念消息队列提供了一种在两个不相关的进程之间传递数据的简单高效的方法。与有名管道比较起来,消息队列的优点在独立于发送与接收进程,这减少了在打开与关闭有名管道之间同步的困难。消息队列提供了一种由一个进程向另一个进程发送块数据的方法。另外,每一个数据块被看作有一个类型,而接收进程可以独...原创 2019-05-13 23:51:56 · 1410 阅读 · 0 评论 -
POSIX线程 | 信号量、互斥锁、条件变量
文章目录什么是线程线程的优缺点线程函数pthread_create()pthread_exit()pthread_join()代码示例信号量互斥锁条件变量线程安全的字符串分割函数什么是线程线程其实就是进程内部的一条执行路径或控制序列。一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。线程的优缺点优点...原创 2019-05-15 01:31:41 · 2111 阅读 · 0 评论 -
Linux网络编程基础API【socket】
文章目录创建socket命名socket监听socket接受连接发起连接关闭连接代码示例创建socketlinux的思想是一切东西皆为文件,socket也不例外,他就是个可读可写可控制可关闭的文件描述符。接下来我们看看如何创建一个socket。#include<sys/types.h>#include<sys/socket.h>int sockfd=socket...原创 2019-05-26 19:17:57 · 1407 阅读 · 0 评论 -
深入理解IO复用技术 | select、poll、epoll
文章目录前言select()和poll() IO多路复用模型select的缺点poll的问题epoll IO多路复用模型实现机制epoll编程实例前言在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。...转载 2019-05-24 01:09:42 · 1483 阅读 · 0 评论 -
【I/O多路复用】poll系统调用
文章目录程序示例【poll的优缺点】程序示例下面是一个基于TCP的客户端服务器交互的程序,建立三次连接后若client客户端不发送数据,则服务器端会一直轮询fdset集合等待client客户端发送数据,直到client发送数据,select会检测到有事件就绪,再进行处理,timeout设置为5秒,若5秒内没有数据发送到服务器则会打印出"time out"。server.c#include&...原创 2019-07-20 08:56:17 · 1450 阅读 · 0 评论 -
【I/O多路复用】epoll系统调用(默认LT模式)
文章目录【1】epoll相关的系统调用epoll_create()epoll_ctl()epoll_wait()代码示例【1】epoll相关的系统调用epoll是Linux特有的I/O复用函数。它在实现和使用上与select、poll有很大差异。首先,epoll使用一组函数来完成任务,而不是单个函数。其次,epoll 把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无须像sel...原创 2019-07-20 22:36:14 · 2109 阅读 · 0 评论 -
基于UDP实现的socket通信
文章目录【1】TCP和UDP的区别【2】TCP和UDP的编程流程【3】函数sendto()和recvfrom()【4】代码示例【1】TCP和UDP的区别Tcp 是 面向连接的 可靠的 流式服务所以Tcp 需要进行三次握手建立连接后,才可以传输用户数据,可靠性是通过应答确认、超时重传机制等保证,还有滑动窗口来进行流量控制。Udp 是 无连接 不可靠 数据报服务所以UDP不需要进行三次握手来...原创 2019-07-20 08:48:07 · 12963 阅读 · 4 评论 -
【I/O多路复用】select系统调用
文章目录使用select函数的过程一般是:先调用宏FD_ZERO将指定的fd_set清零,然后调用宏FD_SET将需要测试的fd加入fd_set,接着调用函数select测试fd_set中的所有fd,最后用宏FD_ISSET检查某个fd在函数select调用后,相应位是否仍然为1。...原创 2019-07-20 08:54:23 · 1372 阅读 · 0 评论 -
IPC(进程间通信) | 信号量机制
进程间的通信进程间的通信有以下几种方式:1. 管道:管道分为有名管道和无名管道2. 信号量:通过控制多个进程对临界资源的访问,使得同一时刻只允许一个进程对临界资源进行访问3. 共享内存:把一块内存空间映射到两个进程的地址空间中,使得他们能够访问同一块内存空间,达到数据的共享。4. 消息队列:向消息队列中添加数据,从消息队列中读取数据本文主要讲通过信号量机制进行进程同步什么是信号量?信...原创 2019-04-19 19:39:02 · 2272 阅读 · 2 评论