摘要: 1.socket 的阻塞模式和非阻塞模式 在阻塞和非阻塞模式下,常讨论的具有不同行为表现的 socket 函数一般有 connect、accept、send 和 recv。在 Linux 上对 socket 进行操作时也包括 write 函数和 read 函数。 在 Linux 上, 可以使用 fc 阅读全文
posted @ 2023-11-23 11:33 野原丶广志 阅读(1833) 评论(0) 推荐(1)
摘要: Linux 上的 select 函数 select 函数用于检测在一组 socket 中是否有事件就绪。事件分为以下三类: 读就绪事件 在 socket 内核中,接收缓冲区中的字节数大于或等于低水位标记 SO_RCVLOWAT,此时调用 recv 或 read 函数可以无阻塞地读该文件描述符,并且返 阅读全文
posted @ 2023-11-22 17:58 野原丶广志 阅读(260) 评论(0) 推荐(0)
摘要: 1.为什么要有条件变量? 在实际应用中,常常会有如下的需求: 用于反复判断一个多线程的共享条件是否满足。 //伪代码 int WaitForTrue() { do{ pthread_mutex_lock(&m); //验证 condition 是否为 true //解锁,让其它线程有机会改变cond 阅读全文
posted @ 2023-11-22 09:10 野原丶广志 阅读(172) 评论(0) 推荐(0)
摘要: #include <pthread.h> #include <errno.h> #include <list> #include <iostream> #include <semaphore.h> #include <unistd.h> class Task { public: Task(int t 阅读全文
posted @ 2023-11-21 11:35 野原丶广志 阅读(32) 评论(0) 推荐(0)
摘要: thread_create函数编译时报错:undefined reference to 'pthread_create' pthread 库不是 Linux 系统默认的库,所以在编译使用pthread_create()创建线程的程序时,需要显式指定 -lpthread参数。 g++ thread.c 阅读全文
posted @ 2023-11-21 11:33 野原丶广志 阅读(53) 评论(0) 推荐(0)
摘要: 1、左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体; 右值是在赋值号右边取出值赋给其它变量;右值可以在内存也可以在CPU寄存器。 一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。 2、引用 引用是C++语法做的优化,引用的本质是还是靠 阅读全文
posted @ 2023-10-11 21:49 野原丶广志 阅读(45) 评论(0) 推荐(0)