进程/线程/协程
文章平均质量分 58
SoulNov23
那些我们说着永远不分离的朋友,早已散落在天涯,时光的洪流中,我们总会长大。
展开
-
spdlog和fork冲突问题
遇到个问题,使用spdlog的async_logger打印日志,一直都是正常的,但是调用了fork之后就不打印了先使用打印TODO大法,使用的spdlog的default_logger打印,走的console打印,结果发现console打印没问题,就async_logger在fork之后就不打印了使用strace -f运行看一下这里的write 1就是console打印的,在fork前后都是正常的,但是write 3只在fork之前调用了,fork后没有调用,直接卡在了futex FUTEX原创 2022-02-19 21:41:23 · 939 阅读 · 0 评论 -
跨平台的线程封装类
#ifdef WIN32#include #include #else#include #endif/*#ifdef WIN32typedef unsigned int(__stdcall *thread_func)(void*);#elsetypedef void*(*thread_func)(void*);#endif*/class base_thread{p原创 2016-07-29 15:58:54 · 3179 阅读 · 3 评论 -
Linux互斥锁和条件变量
#include class thread_lock{public: thread_lock() { pthread_mutexattr_init(&m_mutexatr); //互斥锁重复上锁,不会引起死锁,一个线程对这类互斥锁的多次重复上锁必须由这个线程来重复相同数量的解锁,这样才能解开这个互斥锁,别的线程才能 //得到这个互斥锁 pthread_mutexattr_原创 2016-07-29 15:30:25 · 1238 阅读 · 0 评论 -
libevent多线程使用bufferevent的那些事
void do_accept(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *sa, int socklen, void *ctx){ //不使用Nagle算法,选择立即发送数据而不是等待产生更多的数据然后再一次发送 int optval = 1; setsockopt(fd, SO原创 2016-11-09 17:42:20 · 8020 阅读 · 12 评论 -
线程池的最优大小
计算密集型应用(CPU密集)顾名思义就是应用需要非常多的CPU计算资源,I/O在很短的时间就可以完成,而 CPU 还有许多运算要处理。在计算密集型应用中,线程池的大小应该等同于主机中 CPU 的数量。再添加更多线程将会打断请求的处理,因为线程的上下文切换也会延迟响应时间。非阻塞型 IO 应用将会是 CPU 密集型的,因为在请求得到处理的时候没有线程等待时间。原创 2017-03-01 17:13:36 · 3626 阅读 · 1 评论 -
linux守护进程
1.守护进程最重要的特性是后台运行。 2.守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。 总之,除开这些特殊性以外,守护进程与普通进程基本上没有什么区别。 因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程(一个特殊...原创 2018-03-08 21:05:10 · 1537 阅读 · 0 评论