gj学习
坚持到底cw
奋斗青年
展开
-
同步,异步,阻塞,非阻塞
同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后原创 2014-04-19 22:27:04 · 503 阅读 · 0 评论 -
生产者消费者模型
1. 生产者消费者问题(producer-consumer),有限缓冲,多线程同步。生产者线程和消费者线程共享固定大小缓冲区。2. 关键是保证生产者不会再缓冲区满时加入数据,消费者不会在缓冲区空时消耗数据。3. 解决办法:让生产者在缓冲区满时休眠,等下次消费者消耗缓冲区中的数据的时候,生产者才能被唤醒。同样,让消费者在缓冲区空时进入休眠,等到生产者生产数据后再唤醒。4原创 2014-04-17 17:30:03 · 612 阅读 · 0 评论 -
生产者消费者模型c++版本
mutex.h#ifndef _MUTEX_H_#define _MUTEX_H_#include#include"condition.h"class Mutex { public: friend class Condition; Mutex() { pthread_mutex_init(&pthread_mutex_, NULL);原创 2014-05-19 09:41:43 · 777 阅读 · 0 评论 -
Makefile学习
1. 1、wildcard : 扩展通配符2、notdir : 去除路径3、patsubst :替换通配符2. 建立一个简单的Makefilesrc=$(wildcard *.c./sub/*.c)dir=$(notdir $(src))obj=$(patsubst%.c,%.o,$(dir) )wildcard把 指定目录 ./ 和 ./sub/ 下原创 2014-05-20 22:50:34 · 462 阅读 · 0 评论 -
gtest学习
一.用 TEST() 宏声明测试函数 TEST(name1, name2){EXPECT_EQ(value1, value2);}name1:测试用例名称 类名 文件名name2:测试名称 方法名 函数名二.初始化 googletest 并运行所有测试int main(intargc,char** argv){::testing::InitG原创 2014-05-21 10:03:35 · 688 阅读 · 0 评论 -
单例模式c++
单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。原创 2014-05-23 17:35:07 · 434 阅读 · 0 评论 -
创建守护进程
创建守护进程:使进程在后台运行1.创建子进程父进程退出 为避免挂起控制终端将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。 pid=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的几乎完全相同。 fork调用的一个奇妙之处就是它仅仅被调用一次,却能原创 2014-08-08 17:50:31 · 436 阅读 · 0 评论 -
vim使用技巧
1. 左右分割屏幕:vsplit fileCTRL-W h 跳转到左边的窗口CTRL-W l 跳转到右边的窗口2. 上下分割屏幕:split fileCTRL-W j 跳转到下面的窗口CTRL-W k 跳转到上面的窗口 CTRL-W w 命令可以用于在窗口间跳转。3. v 从光标当前位置开始,光标所经过的地方会被选中原创 2014-07-16 23:29:12 · 448 阅读 · 0 评论 -
gj杂记
一.一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全原创 2015-03-23 22:39:34 · 695 阅读 · 0 评论