- 博客(26)
- 资源 (5)
- 收藏
- 关注
转载 无锁编程[0]__多线程条件下的计数器__原子的加/减/与/或/异或操作__sync_fetch_and_add,__sync_add_and_fetch等
多线程条件下的计数器是服务器开发的常用操作,比如异步请求sessionid的活动,通常我们会用:1、加锁取sessionid2、分段取sessionid (在初始化阶段完成多线程分段取sessionid,这种使我们现在使用的方式,但是计数器是不能分段的)当然我们知道,count++这种操作不是原子的。一个自加操作,本质是分成三步的:1、 从缓存取到寄存器2、 在
2015-06-29 17:36:03 804
转载 互斥锁
在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。中文名互斥锁领 域汇编语言目录1示例2属性对象3销毁对象4设置范围
2015-06-29 16:01:38 642
转载 互斥锁属性PTHREAD_MUTEX_RECURSIVE
四、互斥锁属性 线程和线程的同步对象(互斥量,读写锁,条件变量)都具有属性。在修改属性前都需要对该结构进行初始化。使用后要把该结构回收。我们用pthread_ mutexattr_init函数对pthread_mutexattr结构进行初始化,用pthread_mutexattr_destroy函数对该结构进行回收。 4名称::pthread
2015-06-29 15:54:13 573
转载 Linux线程-互斥锁pthread_mutex_t
在线程实际运行过程中,我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务;互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthread_mutex_lock,pthread_mutex_unlock这几个函数以完成锁的初始化,锁的销毁,上锁和释放锁操作。一,锁的创建 锁可以被动态或静态创建,可以用
2015-06-29 15:53:04 543
转载 localtime与localtime_r
在写代码的时候,经常会用到读取系统时间的函数。很多人都会调用localtime函数来将时间转换本地时间,但是大家往往会忽略了一点,localtime函数不是线程安全的。如果在多线程里调用localtime函数,很可能会出现问题。struct tm *localtime(const time_t *clock);这个函数在返回的时候,返回的是一个指针,实际的内存是localtime内
2015-06-26 13:50:08 1031
原创 gcc __attribute__关键字举例之visibility
visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设置visibility属性。
2015-06-24 14:33:10 1737
原创 鸟哥的Linux私房菜 读书笔记
个人表示,每次看电子档,都会从头开始读,话说会一直读不完。以前会有手抄板的读书笔记,但是不方便携带。现在就开始电子档的读书笔记吧。1. Kernel 必须管理的事项有:* 系统呼叫接口(system call interface)* 行程管理(Process control)* 内存管理(Memory mangement) : 控制整个系统的内存管理* 档案系统管理(Fil
2015-06-19 10:51:50 1591
原创 pthread_create函数 参数不匹配的问题
问题现象:write_log_for_code.cpp:257: error:argument of type ‘void* (Write_log_for_code::)(void*)’ does not match ‘void*(*)(void*)’代码://.cppbool Write_log_for_code::startsleepthread(){int ret
2015-06-16 17:35:49 1136
原创 Program terminated with signal 11, Segmentation fault.
今天写程序遇到一个问题:Program terminated with signal 11, Segmentation fault.gdb 调试现象如下:warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7fff1b1fc000Core was generated by
2015-06-16 15:55:13 35068 5
原创 字符串查找和替换接口
int replace_str(std::string& str, const char * oldpart, const char * newpart){int nReplaced= 0;std::string::size_type nIdx= 0;std::string::size_type nOldLen= strlen(oldpart);if ( 0
2015-06-12 14:24:15 912
转载 POSIX文件及目录管理
在linux操作系统中,实现了两类对文件IO的管理,一类是遵循POSIX标准,linux操作系统自身提供的IO系统调用,如open、close、read等函数;另一类是由ANSI标准提供的标准IO库函数,这些函数是对直接IO系统调用的封装,其在访问文件时根据需要设置了不同类型的缓冲区,从而减少了直接IO系统调用的次数,提高访问效率。 1、 文件流与文件描述符的区别:使用ANSI C函
2015-06-11 11:01:18 730
转载 判断目录是否存在并创建mkdir
Linux下mkdir函数头文件库: #include #include 函数原型: int mkdir(const char *pathname, mode_t mode); 函数说明: mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。
2015-06-11 10:43:09 11781
转载 boost::fast_pool_allocator
Boost库的pool提供了一个内存池分配器,用于管理在一个独立的、大的分配空间里的动态内存分配。Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况。使用pool内存池主要有以下两个优点: 1. 能够有效地管理许多小型对象的分配和释放工作,避免了自己去管理内存而产生的内存碎片和效率低下问题。 2. 告别程序内存泄漏的烦恼,pool库会
2015-06-10 13:19:34 2559
转载 GDB 单步调试
1、首先需要用gcc(g++) 对源文件进行编译生成可执行文件,并且在编译时加上选项-g,把调试信息加到目标文件中。2、假设生成的可执行文件为test,那么gdb test 可以用gdb打开test文件,然后通过break linenum设置断点。可以输入list查看源文件和行号,方便设置断点。断点设置好后就可以run命令运行到断点处了。下面是转载一、初始化输入gd
2015-06-05 14:20:45 1576
翻译 Google Mock启蒙篇 [1] (Google C++ Mocking Framework for Dummies 翻译)
Google C++ Mocking Framework for DummiesGoogle Mock启蒙篇Version: 0.07作者:adrian alexander译者:Koala++ / 屈伟最新PDF版下载What Is Google C++ Mocking Framework当你写一个原型或是测试的时候,直接去依赖真实的对象通常
2015-06-05 10:59:30 1446
翻译 Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译)
Setting Expectations 成功地使用Mock对象的关键是在它上面设置合适的期望。如果你设置的期望太过严格,你的测试可能会因为无关的改变而失败。如果你把期望设置的太过松驰,bugs可能会溜过去。而你需要的是你的测试可以刚好捕获你想要捕获的那一种bug。Google Mock提供了一些方法可以让你的测试尺度刚好( just right )。General Sy
2015-06-05 10:49:13 1690
转载 Google Mock进阶篇 (Google Mock Cookbook译文)
原文链接:http://quweiprotoss.blog.163.com/blog/static/40882883201222721548449/Google C++ Mocking CookbookVersion: 0.32作者:Adrian Alexander译者:Koala++ /屈伟最新pdf版下载 你来对地方了,这里你可以找到Go
2015-06-04 15:11:12 11978 1
转载 gcc 参数 -fprofile-arcs -ftest-coverage作用
gcov 是一个可用于C/C++的代码覆盖工具,是gcc 的内建工具。下面介绍一下如何利用gcov 来收集代码覆盖信息。想要用gcov 收集代码覆盖信息,需要在gcc 编译代码的时候加上这2个选项 “-fprofile-arcs -ftest-coverage”,把这个简单的程序编译一下gcc -fprofile-arcs -ftest-coverage hello.c -o he
2015-06-04 14:58:10 2313
转载 Google C++单元测试框架(Gtest)系列教程之六——FAQ节选
这一节,我们来看Gtest的FAQ(Frequently-Asked Questions)。为什么测试用例和测试实例命名中不应包含下划线在C++中,对于以下情况,相应的标识可能会被编译器或标准库使用:以下划线开始并紧接一个大写字母的标识包含连续两个下划线的标识为避免标识符冲突,用户代码中不应自定义以上两种情况的标识。使用TEST()或TEST_F()时,滥用下划
2015-06-03 15:46:01 663
转载 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
一、前言gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCase级别的,每个TestCase前后。二、全局事件要实现全局事件,必须写一个类,继承testing:
2015-06-03 14:50:18 562
转载 用google mock模拟C++对象
google mock是用来配合google test对C++项目做单元测试的。它依赖于googletest(参见我上篇文章《如何用googletest写单元测试》: http://blog.csdn.net/russell_tao/article/details/7333226),下面我来说说linux上怎么用它来做单元测试。本文包括:1、如何获取、编译google mock;2、如何使
2015-06-03 14:26:53 788
转载 编写自己的Matcher与如何让编译器识别被mock的重载函数
本文目的gmock框架中自带Matcher只针对c++内置类型,如string,int,float等等,有时候无法满足项目要求,所以需要编写自己的Matcher对象。本文介绍如何使用gmock提供的Matcher宏快速编写自己的Matcher对象。在测试重载的mock函数时,需要对Matcher做特别的封装,否则编译在查找重载函数时会出现歧义。 待测的对象
2015-06-03 14:13:03 1578
转载 googlemock
Export to GitHubSearch Search within: All wiki pages Featured pages Current pages Deprecated pages for CheatSheet Goo
2015-06-03 14:05:15 916
转载 linux下安装boost
以下是在ubuntu 7.10 (内核 2.6.22-14)下安装的例子:一、下载最新的 boost 库,下载地址: http://www.boost.org/users/download/二、在适当的位置解压 boost 库,推荐把 boost 库解压到 /usr/local/ 下:$ cd dowload/ # 这个地方替换成你的boost库下载目录$ tar
2015-06-02 15:16:59 723
转载 linux下ln命令学习
这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。这个命令最常用的参数是-s,具体用法是:sudo ln -s 源文件 目标文件 举例:当前目录是/local,而我经常要访问/usr/local/linux/work那么我就可以使用在local下建立一个文件
2015-06-02 15:04:03 466
原创 安装boost库
1. 下载boost库 http://www.boost.org/users/download/2. 解压boost_1_58_0.tar.gz 文件 tar -xzvf boost_1_58_0.tar.gz 3. 解压后,进入boost_1_53_0目录,执行:./bootstrap.sh4.执行: ./b25.
2015-06-02 13:33:23 815
GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求.pdf
2024-03-27
video_file_format_spec_v10_1.pdf
2018-05-14
Lex和Yacc从入门到精通pdf
2017-12-25
rtmpdump-2.3_add_note
2017-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人