- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 007.生产者消费者队列(首尾读写)
所谓的生产者消费者队列,即一个线程读一个线程写的队列我们这里实现的是一个无锁的生产者消费者队列,算法的关键点:1.pop只修改头节点,push只修改尾节点2.保证head和tail非空,因为一旦head和tail为空,push时就必须同时改写head和tail特别说明:1.该生成者消费者队列理论上同时只允许一个线程读和一个线程写2.可以允许多个读线程申请读,但每一时刻只允许一个真正读,...
2020-01-14 17:48:30 268
原创 006.反应器接口
/********************************************************************* 文件名: IReactor.h** 描 述:** 应 用:********************************************************************/#pragma once/// 事件处理程序...
2020-01-13 20:29:19 179
原创 005.生产者消费者队列(翻转队列)
翻转队列 在多线程生产者-消费者模式中生产者线程向队列添加对象,消费者线程从队列取走对象因为涉及到多线程访问,这个队列必须在添加/取走对象时加锁。这个模版实现这种多线程安全的队列,另外使用两个队列翻转的技术,可以极大的减少锁互斥的几率。SwappingListEx 对SwappingList进行了一层封装,当只有一个线程读,多个线程取;一个线程取,多个线程读,读、写是不用同时加锁...
2020-01-13 17:34:07 275
原创 004.多线程内存池
多线程安全内存池内存分配通常是影响一个系统性能的关键所在。内存分配的主要性能瓶颈有:1.由于Windows分配时需要进入操作系统内核态,而进入一个内核态至少需要2000个CPU时钟周期2.频繁的小内存分配会导致内存出现大量碎片,另外容易引发内存页面错误3.当有多个线程需要分配内存时,内存池必须加锁,加锁也需要进入内核态,更重要的是锁碰撞引起自旋等待将浪费大量cpu空转时间实现思...
2020-01-11 16:09:52 576
原创 VS生成sdf和ipch文件太大占用空间问题
vs生成的工程中经常遇到会生成.sdf 和 ipch文件,这两个文件都特别大。有两种方法可以解决者问题方法一: 通过禁用数据库的方式达到关闭这两个文件生成的目的,但是这种方法会产生另外的一些问题,可能导致VS的一些功能不可用。[工具]—>[选项]—>[文本编辑器]—>C/C++]—>[高级]—>[禁用数据库]将其属性设置为True方法二:...
2020-01-11 15:45:33 652
原创 003.线程池
线程池实现,看类图和代码:/********************************************************************* 文件名: Thread.h** 描 述:** 应 用:********************************************************************/#pragma ...
2020-01-09 11:20:49 186
原创 001.单例实体
工作中一些类对象在整个工程中只需要有一份就可以,例如:线程池、内存池、日志引擎、数据库引擎等等。我们可以处理的方法有:定义成全局变量、使用单实体模式(自己取的名称)。下面实例时用到了2个方法:Singleton和SingletonEx。直接看代码/********************************************************************* 文件...
2020-01-08 10:45:09 232
原创 WSRecv
WSARecv()是从一个套接口接收数据的程序。主要用于在重叠模型中接收数据。int WSARecv( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, LPWSAOVERLAPPED lpOverlapped, LPWSA...
2020-01-07 11:36:05 626
原创 002.锁
直接代码#pragma once;#include <windows.h>//////////////////////////////////////////////////////////////////////////// 互斥体class Mutex{ CRITICAL_SECTION m_cs;public: Mutex(); ~Mutex(); ...
2020-01-06 14:22:43 115
原创 memcpy 和 memmove
void *memcpy(void*dst, const void *src, size_t count);void *memmove(void*dst, const void *src, size_t count);
2020-01-06 10:17:43 184
64位进程调用32位DLL实例
2015-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人