第23课 优先选用make系列函数】的更多相关文章

一. make系列函数 (一)三个make函数 1. std::make_shared:用于创建shared_ptr.GCC编译器中,其内部是通过调用std::allocate_shared来实现的. 2. std::make_unique:C++14中加入标准库. 3. std::allocate_shared:行为和std::make_shared一样,只不过第1个实参是个用以动态分配内存的分配器对象. //make_unique的模拟实现 template<typename T, type…
一.epoll 系列函数简介 #include <sys/epoll.h> int epoll_create(int size); int epoll_create1(int flags); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); *  …
最近几天在做一个多搜索引擎关键字排名查询工具,用于及时方便的了解关键词在各大搜索引擎的排名. 在抓取360搜索的时候,发现360搜索每页只支持显示10个搜索结果,如果想获取100个搜索结果数据,就得搜索10次,十分影响用户体验,没有人会为了查询一次关键字排名而愿意等待打开10次的网页时间. 这时我想到了用多线程做并发抓取,正好php curl的curl_multi系列函数能实现此功能. 一.curl_multi系列的函数介绍: 1. curl_multi_init: 用来初始化一个"curl_m…
一.exec替换进程映象 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理.当我们创建 了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行.当然,exec系列的函数也可以将当前进程替换掉. 二.exec关联函数组 包含头文件<unistd.h> 功能用exec函数可以把当前进程替换为一个新进程.exec名下是由多个关联函数组成的一个完整系列,头文件<unistd.h> 原型  …
一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 “线程实现”建立在“进程控制”机制之上,由用户空间的程序库来管理.OS内核完全不知道线程信息.这些线程称为用户空间线程.这些线程都工作在“进 程竞争范围”(process contention scope):各个线程在同一进程竞争“被调度的CPU时间”(但不直接和其他进程中的线程竞争). 在N:1线程模型中,内核不干涉线程的任何生命活动,也不…
在前面介绍了system v 共享内存的相关知识,现在来稍微看看posix 共享内存 和系列函数. 共享内存简单来说就是一块真正的物理内存区域,可以使用一些函数将这块区域映射到进程的地址空间进行读写,而posix 共享内存与system v 共享内存不同的是它是用虚拟文件系统(tmpfs)实现的,已经挂载在/dev/shm 下面.man 7 shm_overview 下面来看系列函数,编译时候加上 -lrt 选项,即连接librt 库 (实时库) 功能:用来创建或打开一个共享内存对象 原型 in…
一.在前面介绍了system v 消息队列的相关知识,现在来稍微看看posix 消息队列. posix消息队列的一个可能实现如下图: 其实消息队列就是一个可以让进程间交换数据的场所,而两个标准的消息队列最大的不同可能只是api 函数的不同,如system v 的系列函数是msgxxx,而posix 是mq_xxx.posix 消息队列也有一些对消息长度等的限制,man 7 mq_overview: simba@ubuntu:~/Documents/code/linux_programming/U…
文章转自 洛谷 谈到GCC的黑科技,大家想到的一定是这句: #pragma GCC optimize (3)//吸氧 抑或是这句: #pragma GCC diagnostic error "-std=c++11"//C++11 然而又有多少人知道__builtin_xxx()这群神奇的存在? 举个栗子:树状数组的核心思想就是一个叫做lowbit()的函数,它是这样写的: inline int lowbit(const int &x){ return x & -x; }…
PHP进程通信基础--shmop .sem系列函数使用 进程通信的原理就是在系统中开辟出一个共享区域,不管是管道也好,还是共享内存,都是这个原理.如果心中有了这个概念,就会很方便去理解代码.由于官网上shmop函数的英语解释稍显复杂,所以一边练习,一边简单翻译了下.信号量的内存扩展函数,比较简单,也非常好理解.所以就没有翻译.这篇博客是通信基础,所以直接就放实例代码了,按照上代码上敲一遍,就能够明白个七七八八了.如果实在不明白,可以复制进去,直接打断点调试,也是一种不错的学习思路. 这篇文章参考…
在页面中调用的服务较多时,使用并行方式,即使用 curl_multi_* 系列函数耗时要小于 curl_* 系列函数. 测试环境 操作系统:Windows x64 Server:Apache PHP: MySQL: cURL: 测试数据库选择 MySQL 官方网站的样本数据库 sakila,下载地址:http://dev.mysql.com/doc/index-other.html 测试页面需要调用 3 个 api: getActorInfo.php <?php // 接口1 $dsn = 'm…