随笔分类 -  操作系统OS

摘要:目录通信流程文件描述符 通信流程 文件描述符 阅读全文
posted @ 2024-01-31 17:57 guanyubo 阅读(30) 评论(0) 推荐(0)
摘要:目录函数简介低层实现逻辑 函数简介 /* Manipulate an epoll instance "epfd". Returns 0 in case of success, -1 in case of error ( the "errno" variable will contain the sp 阅读全文
posted @ 2024-01-30 18:32 guanyubo 阅读(354) 评论(0) 推荐(0)
摘要:目录函数简介低层实现逻辑epoll_create与epoll_create1函数的区别 函数简介 /* Creates an epoll instance. Returns an fd for the new instance. The "size" parameter is a hint spec 阅读全文
posted @ 2024-01-30 18:21 guanyubo 阅读(468) 评论(0) 推荐(0)
摘要:目录函数简介低层实现逻辑 函数简介 /* Wait for events on an epoll instance "epfd". Returns the number of triggered events returned in "events" buffer. Or -1 in case of 阅读全文
posted @ 2024-01-30 18:15 guanyubo 阅读(3529) 评论(0) 推荐(0)
摘要:目录定义events字段data字段 定义 epoll_event结构体一般用在epoll机制中,其定义如下: struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data varia 阅读全文
posted @ 2024-01-29 18:39 guanyubo 阅读(424) 评论(0) 推荐(0)
摘要:epoll 是一种在 Linux 上可用的高性能 I/O 事件通知机制,用于处理大量并发连接。 以下是使用 epoll 进行网络编程的基本步骤: 1. 创建 epoll 实例:使用 epoll_create 函数创建一个 epoll 实例。 2. 添加监听的文件描述符:使用 epoll_ctl 函数 阅读全文
posted @ 2024-01-29 17:17 guanyubo 阅读(384) 评论(0) 推荐(0)
摘要:目录简介应用场景与回调函数区别示例 简介 在Linux下,基于事件驱动的机制主要是通过内核实现,主要涉及到消息传递机制。当硬件设备发出中断时,Linux内核会将触发事件的信息转发到对应的进程上,从而使用户态的应用程序可以响应中断信号,提高程序的响应能力。 此外,Linux还提供了多种方式来实现事件驱 阅读全文
posted @ 2024-01-28 08:58 guanyubo 阅读(270) 评论(0) 推荐(0)
摘要:目录简介如何使用示例 简介 在 Linux 下,I/O 多路复用是一种用于高效处理多个 I/O 操作的技术。它允许一个进程同时监视多个文件描述符或网络套接字,以便在其中任何一个发生 I/O 事件时能够及时响应。 I/O 多路复用的主要目标是提高系统的并发性能和资源利用率。通过同时监听多个 I/O 源 阅读全文
posted @ 2024-01-27 18:04 guanyubo 阅读(70) 评论(0) 推荐(0)
摘要:目录Reactor模型Proactor模型总结实际应用优缺点示例 Reactor 模型和 Proactor 模型都是用于处理异步 I/O 操作的并发模型,它们在设计和实现上有一些区别。 Reactor模型 Reactor 模型(反应器模型)是一种基于事件驱动的并发模型,主要用于处理网络通信等 I/O 阅读全文
posted @ 2024-01-26 22:13 guanyubo 阅读(672) 评论(0) 推荐(0)
摘要:目录简介成员函数 简介 原子操作库 在 C++11 中,std::atomic是一个用于原子操作的类模板。它提供了原子的读-改-写操作,以确保在多线程环境下对共享变量的操作是线程安全的。 std::atomic的主要用途是对共享变量进行原子操作,例如递增、递减、赋值等。它可以用于实现线程安全的数据结 阅读全文
posted @ 2024-01-23 13:28 guanyubo 阅读(335) 评论(0) 推荐(0)
摘要:目录semaphore信号量的实现semaphore信号量的使用Semaphore与condition_variable的区别 semaphore信号量的实现 参考链接 使用了std::mutex和std::condition_variable来实现信号量的操作。 在这个实现中,Semaphore类 阅读全文
posted @ 2024-01-23 12:39 guanyubo 阅读(150) 评论(0) 推荐(0)
摘要:目录简单的线程池C++ 线程池 (学习) 简单的线程池 在 C++11 中,你可以使用 std::thread 和 std::mutex 等标准库来实现一个简单的线程池。 这个代码定义了一个简单的线程池类 ThreadPool,可以用于提交任务并在多个线程上执行。 下面是代码的主要部分和功能: Th 阅读全文
posted @ 2024-01-22 19:17 guanyubo 阅读(45) 评论(0) 推荐(0)
摘要:目录什么是C++中的异步操作?std::async异步调用函数future类 什么是C++中的异步操作? 在C++中,异步操作是指在程序执行期间,可以同时执行多个任务,而无需等待前一个任务完成。这种并发执行的方式可以提高程序的性能和响应速度。 C++中的异步操作通常通过多线程或异步任务来实现。使用s 阅读全文
posted @ 2024-01-21 20:12 guanyubo 阅读(69) 评论(0) 推荐(0)
摘要:目录condition_variable简介成员函数实现线程间的通信 condition_variable简介 std::condition_variable是C++中用于线程同步的一个类。它通常与std::mutex一起使用,用于在一个或多个线程中阻塞,直到另一个线程修改了共享变量并通知了cond 阅读全文
posted @ 2024-01-20 09:44 guanyubo 阅读(179) 评论(0) 推荐(0)
摘要:目录C++中的mutex类如何使用Mutex中的lock与unlocktry_lock、try_lock_for和try_lock_untilstd::lock_guard和std::unique_lock C++中的mutex类 C++中的Mutex类是用于实现线程同步的关键工具之一。它用于保护共 阅读全文
posted @ 2024-01-18 22:22 guanyubo 阅读(562) 评论(0) 推荐(0)
摘要:1 线程的创建 2 线程的执行方式,`join`或者`detach` 3 向线程函数传递参数,需要注意的是线程默认是以拷贝的方式传递参数的,当期望传入一个引用时,要使用`std::ref`进行转换 4 线程是`movable`的,可以在函数内部或者外部进行传递 5 线程在运行过程中,如果需要停顿,可以用`this_thread::sleep_for`实现 6 每个线程都一个标识,可以调用`get_id`获取。 阅读全文
posted @ 2024-01-13 22:27 guanyubo 阅读(71) 评论(0) 推荐(0)