linux网络编程
文章平均质量分 79
baddy你个小菜鸡
这个作者很懒,什么都没留下…
展开
-
获取线程ID:利用关键字__thread减少系统调用使用次数
一、获取当前线程ID的方法#include <unistd.h>#include <sys/syscall.h>#define gettid() syscall(__NR_gettid)pid_t tid=gettid(); //current thread idpid_t pid=getpid(); //current process id ...原创 2018-11-01 18:03:05 · 1080 阅读 · 0 评论 -
moduo网络库的reactor模式(中)
moduo网络库的reactor模式基本构成为“non-blocking I/O + I/O multiplexing”,程序的基本结构是一个事件循环(event loop),以事件驱动(event-driven)和事件回调(event callback)的方式实现业务逻辑。在moduo网络库的reactor模式(上)理清了事件循环(event loop)的基本框架,在此基础上此文加上事件驱动(e...原创 2018-11-06 10:41:56 · 486 阅读 · 0 评论 -
moduo网络库的reactor模式(上)
moduo网络库的reactor模式moduo网络库的reactor模式基本构成为“non-blocking I/O + I/O multiplexing”,程序的基本结构是一个事件循环(event loop),以事件驱动(event-driven)和事件回调(event callback)的方式实现业务逻辑。此文参照陈硕的moduo网络库稍作简化,抽出reactor模式的基本框架。 1、...原创 2018-11-04 17:04:53 · 755 阅读 · 0 评论 -
moduo网络库的reactor模式(下):实现非阻塞TCP网络
1、在reactor框架下加入tcpUnix下的tcp连接也是经由socket文件描述符(sockfd)实现的。此节只是封装了listening sockefd进行监听(accept(2)),得到的新连接(普通sockfd)直接提供给用户让用户自行处理。下一节才进一步地将得到的新连接也封装起来。1.1、首先将unix下的socket调用api简易封装成Socket类,得到wapper。即将...原创 2018-11-10 12:21:04 · 771 阅读 · 0 评论 -
1 防止虚假唤醒
使用条件变量pthread_cond_wait()函数的时候一定要先获得与该条件变量相关的mutex。且条件变量为了防止虚假唤醒,一定要在一个循环while()而非if()里面调用pthread_cond_wait()函数:wait端:Waiting until x is greater than y is performed as follows: pthr...转载 2018-11-17 19:53:39 · 1041 阅读 · 0 评论 -
日志 - 客户端及服务端写法
一、客户端先来看一个日志类的实现方法,这个日志类也是代表着大多数客户端日志的主流写法:log.h: 1 #ifndef __LOG_H__ 2 #define __LOG_H__ 3 4 #include <stdio.h> 5 6 //#ifdef _ZYL_LOG_ 7 #define LogInfo(...) Log::GetI...原创 2018-12-13 20:34:41 · 1430 阅读 · 0 评论 -
关于socket的各种错误码
1、INVALID_SOCKET : 表示该 socket fd 无效。如 accept(2) 或 socket(2) 等在创建socketfd时:int m_socket = socket(AF_INET, SOCK_STREAM, 0);if (m_socket == INVALID_SOCKET){ printf("socket failed, err_code=%d\n", _G...原创 2018-12-20 21:34:55 · 24803 阅读 · 2 评论 -
网络编程中的 SIGPIPE 信号
在网络编程中经常会遇到SIGPIPE信号,默认情况下这个信号会终止整个进程,当然你并不想让进程被SIGPIPE信号杀死。我们不禁会这样思考:在什么场景下会产生SIGPIPE信号? 要怎样处理SIGPIPE信号?1、在什么场景下会产生SIGPIPE信号? SIGPIPE产生的原因是这样的:如果一个 socket 在接收到了 RST packet 之后,程序仍然向这个 socket 写入...转载 2019-01-13 17:06:01 · 897 阅读 · 0 评论