利用ucontext.h中接口实现用户级别线程库

想必大家在初次接触多线程或多进程时一定会感觉这是多么的神奇!一个程序居然可以“同时”执行好多工作,此时你一定有一探其究竟的想法吧?可是无奈,这些都是内核中十分复杂的代码。对于初入计算机大门的我们,去看那些东西,的确有些困难。但是不用灰心,本篇博文我将为大家介绍一个由我自己实现的简单线程,代码也就1...

2016-01-07 17:54:02

阅读数:3290

评论数:5

自动注册工厂消灭switch-case

之前在代码重构书中有了解过java中的反射机制可以消除switch-case,详情可以参考这篇博客http://blog.csdn.net/wwh578867817/article/details/49309789。那么我们的C++有没有类似干掉switch-case的方法?1原始的工厂是如何创建...

2016-01-04 23:56:40

阅读数:1440

评论数:1

一个高效的异步日志

假如让你自己去写一个日志程序,我想最原始且简单的想法因该是,首先将要写入日志文件的内容转化为字符串,然后调用write系统调用将其写入文件。这种实现方法的确就是我们程序最原始的日志方法。这种做法无疑是十分低效的,那么如何让我们的日志能够高效起来呢?本篇博文就是要给大家分享一种高效的日志–异步日志1...

2015-12-27 19:42:12

阅读数:6552

评论数:3

C++11简化线程池的实现

我想用C语言写过线程池的朋友因该都知道用C语言写一个线程池有多么的麻烦,代码差不多300行左右,而且不易阅读。记得大二寒假第一次写线程池用的就是C语言,当时先参考了别人用C写的代码,说实话看起来真困难,因为C写出来的结构好乱,代码又多。我最近在实现一个自己的简单C++网络库(欢迎指点https:/...

2015-12-27 16:50:46

阅读数:5449

评论数:4

当线程函数为C++类成员函数时

很多时候我们在C++多线程开发时,都会或多或少遇到线程函数为C++类中的某个成员函数,此时可能会发生什么呢?你有可能会杂么做呢? 接下来我就为大家总结一下我在这方面走过的一个历程1.问题一记得我在之前在写一个udp传输文件的程序时,我就第一次遇到了线程函数为C++类的成员函数,当时遇到的问题,大...

2015-12-26 20:03:10

阅读数:12208

评论数:5

左值与右值

为了支持移动操作,新标准引入了一种新的引用类型–右值引用。所谓右值引用就是必须绑定到右值的引用。我们可以通过&&来获得幼稚引用1.左值和右值的定义左值和右值都是表达式的属性。一般而言,左值表达式表示的是一个对象的身份,而右值表达式表示的是一个对象的值 例如int i=3;在这里i...

2015-12-25 15:47:23

阅读数:662

评论数:0

用C++11进行多线程开发

今天用c++写了一些多线程的代码,写之前感觉c线程同步中用到互斥锁,条件变量等使用起来比较麻烦,于是就自己把c中的互斥锁,还有条件变量封装了一遍,封完之后在c++11相关书中查看东西时,偶然发现原来我重复造了轮子,这些c++11早就为我们准备妥当了,哪还要自己去封。。。 接下来就总结一下,刚学来...

2015-12-24 15:50:25

阅读数:794

评论数:0

C++中tuple类型

tuple是C++11新标准里的类型。它是一个类似pair类型的模板。pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员。但是每个确定的tuple类型的成员数目是固定的1.tuple的简单使用当我们希望将一些不同类型的数据和成单一...

2015-09-06 14:01:03

阅读数:7100

评论数:0

C++中的多态性

C++中的多态性是面向对象初封装性,继承性之外的又一大特性。多态性也是一种泛型,利用多态性我们可以用不变的代码产生不同的处理结果。也可以说其是”一个接口,多种方法”。1.虚函数的声明虚函数的声明只虚在类内的函数声明前加上virtual即可 实例如下class A { //fun1为普通函...

2015-09-06 11:59:13

阅读数:531

评论数:0

C++中派生类的访问控制

派生类访问其成员的权限会受到俩个因素的影响:一是在基类中该成员的访问说明符,二是派生类的派生列表中访问说明符在介绍各种继承方式之前,首先介绍以下不常见的protected说明符,我们可以把protected看作是一个public,private中和后的产物 protected的具体规则如下 (...

2015-09-06 10:11:25

阅读数:758

评论数:0

C++中的智能指针

上片博客为大家简单介绍了C++中开辟动态内存的方法,虽然动态内存有好多优点,但是如果我们使用不好的话有时候会给我们的程序带来灾难性的后果,今天这篇博客就为大家介绍一种安全的使用指针的方式智能指针1.智能指针的介绍新标准库为我们提供了俩种智能指针。智能指针的使用方法和常规指针基本相似,重要的区别是智...

2015-09-04 14:24:10

阅读数:791

评论数:0

C++中直接管理内存的方式

C++中定义了new和delete俩个运算符来直接管理内存1.动态分配单一对象(1)使用new动态分配和初始化对象由于动态分配的内存是无名的,所以new不能为其分配对象名,而是返回指向该对象的指针//分配一个int型的对象 int *pi = new int;默认情况下,动态分配的对象是默认初始化...

2015-09-04 09:17:08

阅读数:758

评论数:0

C++标准库bind函数

上篇博客在为大家介绍lambda是先由find_if函数引入问题,由于find_if函数的第三个参数所要求的可调用对象只能由一个谓词,所以我们最后选择的解决方法是用lambda表达式。那么此问题还有其他的解决方法么?本篇博客我就为大家带来新的解决方法bind函数1.bind函数的基本介绍bind函...

2015-09-03 21:33:26

阅读数:9469

评论数:0

C++中lambda表达式

在介绍lambda表达式之前,我想先介绍以下C++标准库所支持的传统谓词以及传统谓次的不足,而由此才引入的lambda表达式1.向算法中传递谓词谓词是个可调用的表达式,其返回结果是一个能作为条件的值。谓词分为一元和二元,一元的可调用对象只能有一个参数,二元只能有俩个参数 我们以一元谓词举例: ...

2015-09-03 18:59:42

阅读数:2047

评论数:0

C++中泛型算法

前面几篇博客简单的介绍了几种标准库容器,想必大家一定会感觉标准库中的各个容器的操作函数特别的少。的却标准库并没有给每一个容器单独定义很多操作函数,而是提供了一堆通用的函数来供其一起使用。1.泛型算法的概述C++中大多数算法都定义在头文件algorithm中,当然头文件numeric中定义了一组数值...

2015-09-03 13:45:59

阅读数:512

评论数:0

C++标准库set类型

set(集合)和map一样也属于关联容器,和map不同的是它只保存关键字,而且关键字会按升序排序且不重复,set的内部实现是用红黑树实现的。接下来就为大家介绍set的用法1.set对象的创建事例如下//尖括号中说明set保存关键字类型 set<int> s;2.向set中添加元素像其他...

2015-09-03 09:27:51

阅读数:2786

评论数:0

C++标准库map类型

map是一种关联容器,所谓的关联容器是指支持高效的关键字查找和访问。map中的元素为一些关键字-值(key-value)对,关键字起到索引值的作用,且map中的元素是按照关键字升序排序的。还有map是个映射,所以它的关键字和值是一一对应的。接下来就为大家介绍map的用法1.map的定义我们可以用如...

2015-09-01 22:12:19

阅读数:1951

评论数:0

C++标准库vector类型

vector属于顺序容器,所谓顺序容器,就是元素的顺序与元素的值无关,与元素加入容器的位置相对应。 对于vector可以将其理解为可变大小数组,支持快速随机访问,在尾部之外的位置插入删除可能会比较慢。了解完概念接下来就开始学习它的用法假设以下代码前面都包含vector头文件,并包含using n...

2015-09-01 18:55:04

阅读数:515

评论数:0

C++中的友元

一个类的私有成员除了它的成员函数之外是不能被其他类或函数所访问的。为了能构使其他类或函数能访问类的私有成员,我们可以使其他类或函数成为该类的友元。如果想把一个类或函数作为该类的友元,则只需在在该类或函数的声明前加个friend,注意带有friend的声明必须在类的内部1.友元函数如前言所述,要想将...

2015-08-31 21:03:25

阅读数:507

评论数:0

C++标准库类型string

string类表示可变长字符序列,包含在头文件string中,作为标准库的一部分string定义在std命名空间中1.初始化string对象std::string s1;//默认初始化s1是个空字符 std::string s2 = s1;//s2是s1的副本 std::string s3 = &...

2015-08-30 17:20:49

阅读数:930

评论数:0

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