C++
AC_hell
这个作者很懒,什么都没留下…
展开
-
C++调用C库
转载自http://blog.csdn.net/juanjuan888/article/details/6889843C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误。要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C写的,要用C的方式来处理。1.引用头文件前需要加上 extern “C”,如果引用多个,那么就如下所转载 2017-03-21 20:33:22 · 3401 阅读 · 0 评论 -
c++模板分离式编译时无法解析外部符号
转自:http://blog.csdn.net/bichenggui/article/details/4207084首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32), 后者拥有PE(Po转载 2017-03-30 20:20:32 · 556 阅读 · 0 评论 -
C++用省略符+指针实现printf
首先,printf() 是一个不定形参函数,这一点我们可以通过省略符(...)来实现。其次,我们怎么获取到这些不定实参呢?看个例子:void func(int a, ...){}int main(){ func(1, 2, 3); return 0;}这里定义了一个 func 函数,使用了省略符,然后在 main 方法中我们调用了它,并传入了3个实参1,2,3原创 2017-04-03 19:45:39 · 812 阅读 · 0 评论 -
C++多线程入门
一.概念在讲解多线程之前,有些概念还是有必要了解清楚的。这里详细地讲解了一下,请先耐心看完。当然,我也是刚入门,只是叙述一下我的理解,如有错误还望海涵,OS大牛也可以直接跳过。①程序,进程,线程的区别程序:程序是由一系列的指令和逻辑组成的一个静态文件(如cpp文件),无论能不能运行,它都客观的存在于储存器中。进程:进程是计算机中的程序关于某数据集合上的一次运行活动,是系原创 2016-12-14 11:58:32 · 9324 阅读 · 7 评论 -
C++ Rall机制详解
RAII 是 resource acquisition is initialization 的缩写,意为“资源获取即初始化”。它是 C++ 之父 Bjarne Stroustrup 提出的设计理念,其核心是把资源和对象的生命周期绑定,对象创建获取资源,对象销毁释放资源。在 RAII 的指导下,C++ 把底层的资源管理问题提升到了对象生命周期管理的更高层次。那么到底什么是 RALL 机制原创 2017-04-04 22:47:31 · 19572 阅读 · 6 评论 -
我对Reactor,Proactor模式的一点理解
之前便简单使用过了 Boost.Asio 异步 I/O 库,一直很都好奇诸如 async_read() 之类的异步函数是如何来实现的,于是我就开始了疯狂地找资料。 从重新理解同步,异步,阻塞,非阻塞到重温 Linux 下5种经典的 I/O 模型,然后我找到了 Reactor,Proactor 这两个模式。往下读之前希望您已经认识了各种 I/O原创 2017-05-26 23:09:10 · 898 阅读 · 1 评论 -
C++11之future,promise,packaged_task,async详解
C++11为了给我们提供更便利的并发编程,加入了 future,promise,packaged_task,async 这几个新特性,那么它们到底有什么作用又能给我们带来哪些便利呢?经典的生产-消费模型mutex + condition_variable:首先让我们来看一个最经典的生产-消费模型:#include #include #include #includ原创 2017-05-27 11:34:15 · 9724 阅读 · 3 评论 -
使用boost::shared_mutex实现读写锁
伟大的Boost库给我们提供了 shared_mutex 类,结合 unique_lock 与 shared_lock 的使用,可以实现读写锁。通常读写锁需要完成以下功能:1.当 data 被线程A读取时,其他线程仍可以进行读取却不能写入2.当 data 被线程A写入时,其他线程既不能读取也不能写入对应于功能1,2我们可以这样来描述:1.当线程A获得共享锁时,原创 2017-05-22 19:48:52 · 9850 阅读 · 2 评论