
linux C/C++
文章平均质量分 68
kenianni
这个作者很懒,什么都没留下…
展开
-
如何完整的实现线程类
1.一般方法 一般情况下,使用线程,是用pthread_create函数创建一个线程,创建的过程中采用传递函数指针的方式来实现主体的业务逻辑。比如/*thread.c*/ #include <stdio.h> #include <pthread.h> /*线程一*/ void thread_1(void) { int i=0; ...2016-10-26 14:57:07 · 139 阅读 · 0 评论 -
linux C++ 数字和字符的转换
1、数字===》stringUSING_STD(string);USING_STD(vector);USING_STD(istringstream);USING_STD(ostringstream);USING_STD(ends);USING_STD(setbase);USING_STD(pair);USING_STD(numeric_limits);...2017-10-19 15:16:27 · 904 阅读 · 0 评论 -
wsting 转string
boolUnicode::wstringToString(constwstring&s, string&t) {wchar_twc;for (wstring::size_typei=0;i<s.length();++i) {wc=s[i];if (wc<0x80) {t+=static_cast<char>(wc);}e...2016-11-09 10:44:37 · 508 阅读 · 0 评论 -
linux string 转wstring
boolUnicode::stringToWstring(conststring&s, wstring&t) {t.reserve(t.length() +s.length());wchar_twc;unsignedintminval;unsignedcharc;string::size_typelen;for (string::size_ty...2016-11-09 10:43:06 · 1193 阅读 · 0 评论 -
equal_range
这个函数的作用是返回数组中某一个值的起始地址和结束地址,函数的使用前提是数组要排序好。 比如 vector<int> v1 v1.push_back(1)//下标0v1.push_back(2)//下标1v1.push_back(3)//下标2v1.push_back(4)//下标3v1.push_back(4)//下标4v1.push_back(...2016-11-08 15:35:30 · 237 阅读 · 0 评论 -
lower_bound
1、功能作用 lower_bound 的作用是在已经排好序的数组中返回第一个大于等于(不小于)你所给定的值。 比如,在vector元素中,有1,2,3,4,4,4,5.对应的下标是 0,1,2,3,4,5,6 通过lower_bound 查找4,那么返回的是下标3. 2、使用方法 首先看看lower_bound的函数原型有2个版本。...2016-11-07 14:37:36 · 472 阅读 · 0 评论 -
仿函数
仿函数,本质不是函数,而是可以象函数一样那么去使用。 普通函数int fun(int a){ return 2*a;} 那么我们使用的这个函数的时候,一般使用方式就是int b = fun(5); 仿函数class fun{public: fun(){} int operator ()(int a){ ...2016-11-03 09:00:43 · 208 阅读 · 0 评论 -
信号量Condition
前面有说道过互斥,互斥是异步的时候使用的,就是说,在资源的使用上,我用,你就不能用,我用完了你才可以用,没有逻辑上的相关性,而信号呢,是同步的时候用的,就是说这个步骤我做完了,需要下一个步骤开始了,我做完了通知你,你来处理下一步,有着逻辑上的相关性 声明:class Condition : public NonCopyable {public: /** * ...2016-10-26 17:05:37 · 315 阅读 · 0 评论 -
智能锁
在进行智能锁之前,需要了解一下什么叫 锁,参考http://konin.iteye.com/blog/2333350啥叫智能锁呢,就是我在想锁住资源的时候,就锁住,待资源使用完后,自动释放该锁,比如 {//锁生命周期开始 LockGuard<InfoOrderQueue> guard(m_queue);//加锁}//锁生命周期结束,自动释放锁 上面这段代码中,m_...2016-10-26 16:09:55 · 436 阅读 · 0 评论 -
异步互斥锁
什么情况下需要用到锁呢,就是多线程在使用同一个资源(变量),比如,在类A中有一个变量int i,A创建了3个线程,i作为变量传递给了这3个线程,每个线程都需要对这i进行修改,那么在使用 i 的时候,这3个线程都需要进行锁操作。 第一步 声明纯虚类:class Lock {public: /** * 析构函数 */ virtual ~Lock() {} ...2016-10-26 15:43:10 · 243 阅读 · 0 评论 -
线程池
线程池,首先要明白,线程池是用来管理线程类的,线程类的实现可以参考我前面说过的方法,连接: http://konin.iteye.com/blog/2333332既然是管理线程类,就必须要有一个容器(池子)来装这些线程类,同时间,要知道有那些线程类处于运行工作的状态,所以还要有一个容器装运行状态的线程 什么情况下需要用到线程池?场景1、一个业务,可以通过某种规则,用多个线程...原创 2016-10-26 15:15:46 · 100 阅读 · 0 评论 -
shell 获取昨天的日期
有些操作系统支持 date 命令直接获取昨天的日期,比如 linux:strdate=`date -1d +"%Y%m%d"` 系统的不同,导致date命令有的支持有的不支持直接获取,这里给一个通用的脚本: #取昨天的时间month=`date +%m`day=`date +%d`year=`date +%Y`month=`expr $month...原创 2017-10-24 15:44:06 · 1226 阅读 · 0 评论