随笔分类 -  glibc/c++

in linux
摘要:C++多线程开发是一个复杂的事情,mfc下提供了CWinThread类,和AfxBeginThread等等函数,但是在使用中会遇到很多麻烦事情,例如线程之间参数传递的问题,我们一般都是把参数new一个结构体,传递给子线程,然后释放的工作交给了子线程,这样不可避免会有内存泄漏的危险,例如线程关闭的问题,我们一般用WaitForSingleObject来完成线程关闭工作,但是这个函数并不一定保证线程能收到要关闭的信号,这样父亲已经退出工作了,子线程还在工作,程序也会有潜在的危险。 所以我已经慢慢不再用这套线程机制了,boost标准stl库的出现,让我眼前一亮,boost所推行的简洁代码概念和模板概 阅读全文
posted @ 2011-02-28 16:40 BloodAndBone 阅读(1709) 评论(0) 推荐(0)
摘要:boost库学习笔记1.Boost C++ 库概述Boost C++ 库 是一组基于C++标准的现代库。 其源码按 Boost Software License 来发布,允许任何人自由地使用、修改和分发。 这些库是平台独立的,且支持大多数知名和不那么知名的编译器。Boost 社区负责开发和发布 Boost C++ 库。 社区由一个很大的C++开发人员群组组成,这些开发人员来自于全球,他们通过网站 www.boost.org 以及几个邮件列表相互协调。 社区的使命是开发和收集高质量的库,作为C++标准的补充。 那些被证实有价值且对于C++应用开发非常重要的库,将会有很大机会在某天被纳入C++标准 阅读全文
posted @ 2011-02-28 16:39 BloodAndBone 阅读(9313) 评论(0) 推荐(2)
摘要:const char*和char const*以及char*const const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。char * const cp; ( * 读成 pointer to ) cp is a const pointer to char const char * p; p is a pointer to const char; 阅读全文
posted @ 2011-02-16 16:03 BloodAndBone 阅读(886) 评论(0) 推荐(0)
摘要:#include <stddef.h>template<typename T>class Singleton{public: static T &getInstance () { if(NULL == instance) { instance = new T(); } return *instance; } static void delInstance () { if(NULL != instance) { delete instance; instance = NULL; } }protected: Singleton () { } ~Sing 阅读全文
posted @ 2011-02-15 15:07 BloodAndBone 阅读(399) 评论(0) 推荐(1)
摘要:transform(temp.begin(),temp.end(),temp.begin(),toupper); std::string sl = "hello";transform(sl.begin(), sl.end(), sl.begin(), (int(*)(int))std::toupper);这样得到 sl 值是 大写的 HELLO transform 是遍历一个容器里面元素 然后执行一个操作第1和2个参数是数据起始和结束位置(迭代器)参数3是写入目标的起始位置参数4是执行的操作(函数) 阅读全文
posted @ 2011-02-12 17:10 BloodAndBone 阅读(540) 评论(0) 推荐(0)
摘要:#include &lt;unistd.h&gt;int daemon(int nochdir,int noclose)在创建精灵进程的时候,往往需要将精灵进程的工作目录修改为"/"根目录并且将标准输入,输出和错误输出重定向到/dev/nulldaemon的作用就是当参数nochdir为0时,将根目录修改为工作目录noclose为0时,做输入,输出以及错误输出重定向到/dev/null执行成功返回0错误返回-1 ......string strMetadataPath = str(boost::format("%s/DCManager.xml 阅读全文
posted @ 2011-02-12 17:09 BloodAndBone 阅读(820) 评论(0) 推荐(1)
摘要:代码 阅读全文
posted @ 2011-01-19 17:59 BloodAndBone 阅读(402) 评论(0) 推荐(0)
摘要:一、Posix有名信号灯1.posix有名信号灯函数 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯。有名信号灯总是既可用于线程间的同步,又能用于进程间的同步。1. sem_open名称::sem_open功能:创建并初始化有名信号灯头文件:#include 函数原形:sem_t *sem_open(const char *name,int oflag,/*mode_t mode,unsigned int value*/);参数:name 信号灯的外部名字oflag 选择创建或打开一个现有的信号灯mode 权限位value 信号灯初始值返回值:成功时返回指向信号灯的指针 阅读全文
posted @ 2011-01-18 18:05 BloodAndBone 阅读(14371) 评论(1) 推荐(0)
摘要:信号量是一种对多个进程访问共享资源进行控制的机制,其实为了解决互斥共享资源的同步问题而引入的机制。不能单独定义一个信号量,而只能定义一个信号量集,其中包括一组信号量,同意信号量集中的信号量使用同一引用ID,这样设置是为了多个资源或同步操作的需要。与信号量有关的几个系统调用函数:semget()可以使用系统调用semget()创建一个新的信号量集,或者存取一个已经存在的信号量集:系统调用:semget();原型:intsemget(key_t key,int nsems,int semflg);返回值:如果成功,则返回信号量集的IPC标识符。如果失败,则返回-1:errno=EACCESS(没有 阅读全文
posted @ 2011-01-18 17:50 BloodAndBone 阅读(1340) 评论(0) 推荐(0)
摘要:Normal 0 0 2 false false false MicrosoftInternetExplorer4 当两个进程共享资源时,如何保证按序地访问共享资源十分重要;否则,混乱的执行可能导致程序的崩溃。信号量在计算机术语中表示一种特殊的标志类型,它用于保持并发进程的同步。信号量类似于并发进程的交通信号灯。这里有两类使用信号量的API函数:System V API 和POSIX API。信号量的本质是一个计数器。从理论上来说,计数器会跟踪一些有限资源。一种常见的用法是为每个资源都会分配一个信号量,所以,信号量计数的增量从来不会大于1。POSIX信号量函数——sem_open, s 阅读全文
posted @ 2011-01-18 17:43 BloodAndBone 阅读(790) 评论(0) 推荐(0)
摘要:VA函数(variable argument function),参数个数可变函数,又称可变参数函数。C/C++编程中,系统提供给编程人员的va函数很少。*printf()/*scanf()系列函数,用于输入输出时格式化字符串;exec*()系列函数,用于在程序中执行外部文件(main(int argc, char* argv[]算不算呢,与其说main()也是一个可变参数函数,倒不如说它是exec*()经过封装后的具备特殊功能和意义的函数,至少在原理这一级上有很多相似之处)。由于参数个数的不确定,使va函数具有很大的灵活性,易用性。一、 从printf()开始从大家都很熟悉的格式化字符串函数 阅读全文
posted @ 2011-01-18 11:12 BloodAndBone 阅读(864) 评论(0) 推荐(0)
摘要:基本IO函数的使用(mkstemp)mkstemp(建立唯一的临时文件) 表头文件 #includestdlib.h 定义函数 int mkstemp(char * template); 函数说明: mkstemp()用来建立唯一的临时文件。参数 template 所指的文件 名称字符串中最后六个字符必须是 XXXXXX。mkstemp()会以可 读写模式和 0600 权限来打开该文件,如果该文件不存在则会建立 该文件。打开该文件后其文件描述词会返回。 文件顺利打开后返回可读写的文件描述词。若果文件打开失败则返 回 NULL,并把错误代码存在 errno 中。 错误代码 EINVAL 参数 阅读全文
posted @ 2011-01-18 10:39 BloodAndBone 阅读(2763) 评论(0) 推荐(0)