06 2020 档案
摘要:以读或写打开一个FIFO会阻塞到另一端也打开。 当open一个FIFO时,非阻塞标志(O_NONBLOCK)会产生下列影响: 没有指定O_NONBLOCK,只读open要阻塞到某个其他进程为写而打开这个FIFO为止。类似的,只写open要阻塞到某个其他进程为读而打开它为止。 如果指定了O_NONBL
阅读全文
摘要:1 #ifndef PROCESS_LOG_H 2 #define PROCESS_LOG_H 3 4 #include <string> 5 #include <sstream> 6 #include <cstring> 7 8 #include <fcntl.h> 9 #include <sys
阅读全文
摘要:直接把注释写到代码中: int __pthread_mutex_lock (pthread_mutex_t *mutex) { unsigned int type = PTHREAD_MUTEX_TYPE_ELISION (mutex); //安全检查 LIBC_PROBE (mutex_entry
阅读全文
摘要:c++11的thread库提供了获取tid的接口: std::this_thread::get_id() 这个接口返回的是一个内存地址指向表述线程的结构体(pthread也是一样)。 有的时候这种方式获取的pid过长,可以使用syscall获取lwp,也就是top -H中看到的id,但也要注意sys
阅读全文
摘要:使用两个缓存区存放日志,每个缓存区为一个hash表,通过线程id计算对应的hash值,将日志存入对应的位置。 一个log线程读取缓存区,并将其写入log文件,每次将两个缓存区更换,防止锁争用的开销,将缓冲区的日志写入文件后再次对换缓冲区,循环往复。 logger.h 1 #ifndef LOGGER
阅读全文
摘要:当两个头文件a.h和b.h存在相互引用的状况时,可以在其中一个头文件预先定义类型。如: // A.h class B; class A{ B data; public: void fun(); }; //B.h #include "A.h" class B{ public: int data; }
阅读全文

浙公网安备 33010602011771号