自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 std::future和std::promise

C++11标准库提供了std::future和std::promise用于处理异步任务。std::future表示期望值,可以使用期望值等待一次性事件。std::promise表示承诺的意思,std::future可以和std::promise进行绑定。std::promise<T>提供设定值的方式(类型为T),这个类型和std::future<T>对象相关联,期望值可以阻塞等待线程,同时,提供数据的线程可以使用组合中的承诺值来对相关值进行设置,并且将期望值的状态设置为就绪状态。

2024-08-30 14:55:22 817

原创 std::async的使用

C++11提供了thread线程库,可以通过std::thread启动线程,同时也提供了std::async来执行异步任务。std::async与std::thread对象等待的方式不同,std::async会返回一个std::future对象,这个对象持有最终计算出来的结果,当需要这个值的时候,只需要调用这个对象的get()成员函数,并且会阻塞线程直到期望值状态变为就绪。

2024-08-26 16:50:16 630 1

原创 C++实现异步日志

C++实现异步日志系统

2024-03-01 16:46:04 601

原创 C++锁的使用

互斥锁,共享锁,递归锁,自旋锁等锁的使用

2024-02-26 17:51:47 1037

原创 std::move和std::forward

std::move是c++11引入的,用于将一个资源"移动"到另一个对象,而不是复制。但是通过std::move的源码可以发现,其底层实际并没有"转移"的动作,那是如何实现呢?通过源码可以发现,std::move的底层实际只是进行了类型强制转换,将一个变量强制转换成了一个右值。1.remove_reference_t:用于类型转换,用于移除_Ty的引用,如果_Ty是T&或者T&&,都会变成T类型2._Arg是函数参数,并且是一个右值引用,因此参数可以是左值也可以是右值。

2024-02-26 10:26:59 370

原创 C++线程池的实现

线程池是一种并发编程的技术,用于管理线程资源。线程池需要先预先创建一定数量的线程,当有任务进来的时候,这些线程会去执行对应的任务。当没有任务的时候,线程会在线程池中进行等待,直到有任务进来。线程池的主要目的是避免反复创建和销毁线程的开销,以及有效地控制并发线程的数量。通过使用线程池,可以降低系统的负载,并提高任务执行的效率。当频繁的进行线程的创建和销毁的时候,可以考虑用线程池进行代替。

2024-02-22 09:51:45 928

原创 C++单例实现

单例模式确保一个类的实例话只能有一个对象,单例模式在日志系统,数据库操作中比较常见。常见的饿汉模式和懒汉模式不在过多介绍,以下是C++11实现单例的方式,一种是使用static确保只有一个实例,一种是利用call_once确保只执行一次初始化。

2024-02-21 15:30:49 155

原创 Linux下多线程并发服务器的简单实现

Linux下多线程并发服务器的简单实现pthread_server.c#include <stdio.h>#include <sys/types.h> #include <sys/socket.h>#include <arpa/inet.h>#include <string.h>#include <sys/time.h>#include <unistd.h>#include <pt

2021-04-27 11:31:25 190

原创 io多路复用之select

select函数介绍:#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);nfds :监视的文件描述符数量readfds :将是否有可读的数据注册到fd_se...

2021-04-26 13:00:18 81

原创 多进程并发服务器

多进程并发服务器tcp_process_server.c#include <stdio.h>#include <sys/types.h> #include <sys/socket.h>#include <errno.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>#include <sys/types.h&

2021-04-25 16:47:22 105

原创 TCP简单实现(ipv4)

服务器端(server.c)#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>#include <netinet/in.h>#define ERRO...

2021-04-25 15:38:48 926 1

数据结构常见算法代码实现.zip

常见的顺序表,单链表,双向链表,队列,栈,二叉树,哈希表等完整代码介绍

2021-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除