KnightOnHorse的博客

追求技术的道路永无止境

排序:
默认
按更新时间
按访问量

Boost.thread创建线程的各种情景

创建线程 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0& threadfunc):...

2018-05-28 09:00:26

阅读数:44

评论数:0

Boost.mutex连续两次加锁会造成死锁

问题代码如下:#include<iostream> #include<iomanip> using namespace std; #include <boost/thread...

2018-05-23 09:25:54

阅读数:137

评论数:0

路漫漫其修远兮,吾将上下而求索

未完成待完成代码:#include<iostream> #include<pthread.h> #include<cstdio> #include&l...

2018-05-18 12:52:47

阅读数:30

评论数:0

CJobQueue任务队列的实质就是生产者消费者模型的应用

详细实现代码如下:#ifndef JOBQUEUE_H__ #define JOBQUEUE_H__ #if defined(_MSC_VER) && (_MSC_VER >= 1200) # pragma once #end...

2018-05-18 12:25:49

阅读数:36

评论数:0

连接服务器,并向服务器发送一个GET请求包,等待响应【异步方式】

连接服务器,并向服务器发送一个GET请求包,等待响应。#include <iostream> #include <string> using namespace std; #include &...

2018-05-17 09:22:32

阅读数:117

评论数:0

连接服务器,并向服务器发送一个GET请求包,等待响应【同步方式】

连接服务器,并向服务器发送一个GET请求包,等待响应。#include <iostream> #include <string> using namespace std; #include &am...

2018-05-16 12:07:09

阅读数:82

评论数:0

Boost.worker可以保证ioservice一直run下去,直到调用stop

        boost::asio 在创建io_service时,可以指定线程数,如果没有指定,默认是一个线程,也就是io_service run的那个线程,如果没有任务运行,该线程会退出。       如果在创建的时候指定了线程数,那么io_service在执行的时候线程数就可以并发执行,如...

2018-05-16 10:21:01

阅读数:169

评论数:0

Boost.resolver将域名映射为IP,将服务转换为端口

示例代码如下:#include <iostream> using namespace std; #include <boost/asio/ip/tcp.hpp > #include &...

2018-05-16 08:57:54

阅读数:70

评论数:0

Boost.query用来保存表示IP的域名和端口上的服务名

示例代码如下:#include <iostream> using namespace std; #include <boost/asio/ip/tcp.hpp > using namespace boo...

2018-05-16 08:34:00

阅读数:26

评论数:0

CThreadGroupEx普通计时器和高精度计时器

每隔一段时间,就会被触发一次,可用于定时备份和CS中的心跳检测.#include<ctime> #include<cstdio> #include<iostream>...

2018-05-16 08:24:06

阅读数:35

评论数:0

CThreadGroupEx多任务多线程,无序执行和有序执行

CThreadGroupEx对thread_group进行了封装,实现了函数执行体的内置,可以很好地控制各个线程。新增任务的任务可以实现有序执行。#include<ctime> #include<cstdio>...

2018-05-15 19:39:19

阅读数:54

评论数:0

Boost.mutex递归访问同一把锁造成死锁

mutex虽然可以很好地协调线程同步,互斥访问全局变量。但不慎使用,也可能会造成死锁。下面这段代码就演示了递归访问同一把锁造成的死锁:#include<iostream> #include<iomanip> u...

2018-05-15 09:24:44

阅读数:77

评论数:0

Boost.DateTime日期时间的操作

Boost.DateTime库提供了时间日期相关的计算、格式化、转换、输入输出等等功能,为C++的编程提供了便利。不过它有如下特点:1. Boost.DateTime 只支持1400年以后的任何Gregorian日历日期。如果你需要计算再早的日期,则需要寻求其他库来支持。日期和时间是编程过程中常用...

2018-05-14 13:45:36

阅读数:54

评论数:0

Boost.shared_ptr陷阱

条款1:不要把一个原生指针给多个shared_ptr管理int* ptr = new int;shared_ptr<int> p1(ptr);shared_ptr<int> p2(ptr); //logic e...

2018-05-14 12:26:54

阅读数:134

评论数:0

Boost.circular_buffer用法详解

Boost.Circular_buffer维护了一块连续内存块作为缓存区,当缓存区内的数据存满时,继续存入数据就覆盖掉旧的数据。它是一个与STL兼容的容器,类似于 std::list或std::deque,并且支持随机存取。circular_buffer 被特别设计为提供固定容量的存储大小。当其容...

2018-05-12 21:52:20

阅读数:208

评论数:0

Boost.asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全

1、实现多线程方法:其实就是多个线程同时调用io_service::run      for (int i = 0; i != m_nThreads; ++i){ boost::shared_ptr<boost::thread> poThread(ne...

2018-05-12 17:33:58

阅读数:406

评论数:1

CSemaphore自定义轻量级信号量实现的同步

程序描述:主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep-> 全局变量++ -> sleep -> 输出参数和全局变量。要求:1.子线程输出的线程序号不...

2018-05-12 15:22:13

阅读数:57

评论数:0

win_iocp_io_service浅析

进入正题,简要说一下asio的实现原理吧。在win32平台上,asio是基于IOCP技术实现的,我以前也用过IOCP,却没想到居然能扩展成这样,真是神奇!在其他平台下还会有别的方法去实现,具体见io_service类下面这部分的源码:  // The type of the platform-sp...

2018-05-12 14:30:50

阅读数:92

评论数:0

Boost.thread之while(true)型线程终结方法

我们的程序中经常会用到线程来执行某些异步操作,而有些时候我们的线程执行的函数是这个样子的:void ThreadBody() { while( true ) { std::cout << &quot...

2018-05-12 10:38:00

阅读数:37

评论数:0

IO模型

io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。    asio::io_service io_service;    asio::ip::tcp::socket socket(io_servi...

2018-05-12 08:37:42

阅读数:49

评论数:1

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