网络编程
文章平均质量分 59
吴刀钓鱼
以教员为榜样,不卑不亢,做好当下的事。
展开
-
多线程与并发服务器设计
1.循环式/迭代式(iterator)服务器无法充分利用多核CPU,不适合执行时间较长的服务2.并发式服务器one connection per process/one connection per thread适合执行时间比较长的业务3.prefork or pre thread惊群现象4.反应式(reactive)服务器(reactor模式)并发处理多个请求,实际上是在一个线程中完成。无法充分利用多核CPU不适合执行时间比较长的服务,所以为了让客户感觉是在“并发”处原创 2021-04-05 19:20:12 · 146 阅读 · 0 评论 -
epoll使用详解
1.epoll函数#include <sys/epoll.h>int epoll_creat(int size);int epoll_creat1(int flags);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);typedef u原创 2021-04-04 10:17:52 · 188 阅读 · 0 评论 -
poll使用详解
1.poll函数#include <poll.h>int poll(struct pollfd *fds, nfds_t nfds, int timeout);struct pollfd{ int fd; //file descriptor short events; //requested events short revents; //returned events};//fd:输入输出参数//nfds:文件描述符个数//timeout:超时时间1.1 poll使原创 2021-04-04 00:56:02 · 1244 阅读 · 0 评论 -
POSIX条件变量
1.什么是条件变量当一个线程互斥地访问某个变量的时候,它可能发现在其它线程改变状态之前,它什么也做不了例如一个线程访问队列时,发现对列为空,它只能等待,直到其它线程将一个节点添加到队列中。这种情况就需要条件变量。2.条件变量函数pthread_cond_init //初始化pthread_cond_destroy //销毁pthread_cond_wait //在一个条件之上等待pthread_cond_signal //条件满足时向一个等待线程发起通知pthread_cond_broa原创 2021-04-02 11:19:53 · 170 阅读 · 0 评论 -
POSIX信号量与互斥锁
1.POSIX信号量相关函数//有名信号量,可用于不同进程间的多个线程通信sem_open();sem_close();sem_unlink();//无名信号量sem_init();sem_destroy();//PV原语操作sem_wait();sem_post();2. POSIX互斥锁//无名pthread_mutex_init();pthread_mutex_lock();pthread_mutex_unlock();pthread_mutex_destroy(原创 2021-04-02 10:22:57 · 170 阅读 · 0 评论 -
POSIX共享内存
1.POSIX共享内存相关函数1.1 shm_open函数功能,用来创建或打开一个共享内存对象原型int shm_open(const char *name, int oflag, mode_t mode);//name:共享内存对象的名字//oflag:与open函数类似,可以是O_RDONLY、O_RDWR,还可以按位或上O_CREAT、O_EXCL、O_TRUNC等。//mode:此参数总是需要设置,如果oflag没有指定了O_CREAT,可以指定为0返回值,成功返回非负整数文原创 2021-04-01 22:15:59 · 168 阅读 · 0 评论 -
POSIX消息队列
1.POSIX消息队列相关函数1.1 mq_open函数功能,用来创建和访问一个消息队列原型mqd_t mq_open(const char *name, int oflag);mqd_t mq_open(const char *name, int oflag, mode_t mode, struct mq_attr *attr);//name:某个消息队列的名字,必须以/打头,并且后续不能有其它/,长度不超过NAME_MAX//oflag:与open函数类似,可以是O_RDONLY、O_原创 2021-04-01 21:41:13 · 144 阅读 · 0 评论 -
System V信号量
1.信号量集结构struct semid_ds{ struct ipc_perm sem_perm; time_t sem_otime; time_t sem_ctime; unsigned short sem_nsems;}2.信号量集函数2.1 semget函数功能,用来创建和访问一个信号量集原型int semget(key_t key, int nsems, int semflg);//key:信号集的名字//nsems:信号集中信号量的个数/原创 2021-04-01 16:50:33 · 75 阅读 · 0 评论 -
System V共享内存
1.什么是共享内存共享内存区是最快的IPC形式。一旦这样的内存映射到共享它瑞典进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。1.2 mmap函数功能,将文件或者设备空间映射到共享内存区原型void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);//addr:要映射的起始地址,通常指定为NULL,让内核自动选择//len:原创 2021-04-01 15:24:51 · 100 阅读 · 0 评论 -
System V消息队列
1.什么是消息队列消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)cat /proc/sys/kernel/msgmaxcat /proc/sys/kernel/msgmnbcat /proc/sys/kernel/msgmni2原创 2021-04-01 11:33:58 · 230 阅读 · 0 评论 -
进程间通信概念
进程间通信概念1.进程同步进程同步指的是多个进程需要相互配合共同完成一项任务。2.进程互斥由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系称为进程的互斥。系统中某些资源只允许一个进程使用,称这样的资源为临界资源或互斥资源。在进程中涉及到互斥资源的程序段叫临界区。3.进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它或它们发生了某种事件(原创 2021-04-01 08:38:03 · 231 阅读 · 0 评论 -
线程基本函数原型
1.创建一个新线程1.1函数原型int pthread_creat(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);1.2参数thread:返回新创建的线程IDattr:设置线程的属性,attr为NULL表示使用默认属性start_routine:线程启动后要执行的函数地址arg:传给线程启动函数的参数1.3返回值成功返回0,失败返回错误码。传统的一些原创 2021-03-27 23:53:28 · 521 阅读 · 0 评论