上一页 1 2 3 4 5 6 ··· 13 下一页
摘要: 序 zeromq是一个轻量级的消息库。它扩展了标准的套接字接口,其特性与传统的消息中间件不同,zeromq提供异步消息队列、多消息传递模式、消息过滤(订阅)、无缝访问多个传输协议等的抽象。 本系列API文章基于ZMQ4.1.7编写。 1、上下文 在使用任何ZMQ的库函数之前,必须创建ZMQ上下文,并 阅读全文
posted @ 2018-04-23 21:13 Memset 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 1、序 Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。 阅读全文
posted @ 2017-12-19 22:00 Memset 阅读(1658) 评论(0) 推荐(0) 编辑
摘要: 1、背景 最近在看一个大佬写的服务器代码的时候,发现他写的单例模式代码很有趣,开始看的时候没看懂,后面研究了一把,发现这个代码其实就是boost里面的一种单例模式,虽然boost里面有很多单例模式,我们在这里就先研究我看到的这种。 我们来看最简单的单例模式: 这是最简单的版本,在单线程下(或者是C+ 阅读全文
posted @ 2017-12-15 21:17 Memset 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 1、背景 最近再看一个开源代码的时候,看到很多宏经常这么写的: 一眼看到的时候就知道这一份代码执行一次,那么do...while还有什么意义呢?在查阅了很多资料之后,才发现,do...while(0)用处太多了,所以在这里总结一下。 2、总结 2.1 辅助定义多语句宏 如果我们定义下列宏: 这个宏的 阅读全文
posted @ 2017-12-12 20:31 Memset 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 1、半同步半异步线程池 在处理大量并发任务的时候,如果一个请求一个线程来处理任务,大量的线程创建将会消耗过多的资源,还增加了线程上下文切换的开销,而通过线程池技术可以很好的解决这个问题。 线程池技术通过在系统中预先创建一些线程,当任务请求来到的时候,从线程池中分配一个预先创建的线程来处理任务,在任务 阅读全文
posted @ 2017-12-03 19:44 Memset 阅读(1149) 评论(0) 推荐(0) 编辑
摘要: 1、异步操作 C++11提供了异步操作相关的类,std::future、std::promise和std::package_task。std::future作为异步结果的传输通道,方便的获取线程函数的返回值;std::promise用来包装一个值,将数据和future绑定起来,方便线程赋值;std: 阅读全文
posted @ 2017-12-03 19:36 Memset 阅读(1871) 评论(0) 推荐(0) 编辑
摘要: 1、原子变量 C++11提供了原子类型std::atomic<T>,可以使用任意类型作为模板参数,使用原子变量就不需要使用互斥量来保护该变量,用起来更加简洁。 举个例子,如果要做一个计数器,使用mutex时和使用原子变量依次如下: 2、call_once/once_flag 单调函数就是在多线程环境 阅读全文
posted @ 2017-12-03 19:30 Memset 阅读(1097) 评论(0) 推荐(0) 编辑
摘要: 1、简介 C11提供另外一种用于等待的同步机制,它可以阻塞一个或者多个线程,直到收到另外一个线程发出的通知或者超时,才会唤醒当前阻塞的线程。条件变量要和互斥量配合起来使用。 condition_variable,配合std::unique_lock<std::mutex>进行wait操作。 cond 阅读全文
posted @ 2017-12-03 19:28 Memset 阅读(1755) 评论(0) 推荐(0) 编辑
摘要: 1、概述 锁类型 c11提供了跨平台的线程同步手段,用来保护多线程同时访问的共享数据。 std::mutex,最基本的 Mutex 类,独占的互斥量,不能递归使用。 std::time_mutex,带超时的独占互斥量,不能递归使用。 std::recursive_mutex,递归互斥量,不带超时功能 阅读全文
posted @ 2017-12-03 18:50 Memset 阅读(2714) 评论(0) 推荐(0) 编辑
摘要: 1、线程的创建 C11创建线程非常简单,只需要提供线程函数就行,标准库提供线程库,并可以指定线程函数的参数。 2、阻塞&非阻塞 在线程执行的时候,可以选择线程是否阻塞执行,如果阻塞,则主线程等线程函数执行完,再往下执行,否则启动线程之后,主线程直接往下执行。 join函数会阻塞线程,直到线程函数执行 阅读全文
posted @ 2017-12-03 18:44 Memset 阅读(2169) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 13 下一页