Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。
==sem_wait_i(&m_enques,mswait))...{</P>returnfalse;
}
//AUTO_GUARD:定界加锁,见Linux多线程及临界区编程例解的tmutex.h文件界说。
AUTO_GUARD(g,MUTEX_TYPE,m_lock);
try
...{m_data.push_back(item);
cout<<"push"<<item<<endl;
sem_post(&m_deques);
returntrue;
}
catch(...)...{
returnfalse;
}
}
boolpop_front(T&item,boolbpop=true,intmswait=-1)...{//守候mswait毫秒直到从行列掏出元素,mswait为-1则一向守候if(-1==sem_wait_i(&m_deques,mswait))...{
returnfalse;
}
//AUTO_GUARD:定界加锁,见Linux多线程及临界区编程例解的tmutex.h文件界说。
AUTO_GUARD(g,MUTEX_TYPE,m_lock);
try
...{item=m_data.front();
if(bpop)
...{m_data.pop_front();
cout<<"pop"<<item<<endl;
}
sem_post(&m_enques);
returntrue;
}
catch(...)...{
returnfalse;
}
}
inlinesize_tsize()
...{returnm_data.size();
}
private:
MUTEX_TYPEm_lock;
deque<T>m_data;
size_tm_MaxSize;
sem_tm_enques;
sem_tm_deques;
};
#endif
//--------------------------msgdequeue.h停止-------------------------------------
//--------------------------test.cpp入手下手-------------------------------------
//主程叙文件
#include"msgdequeue.h"#include<pthread.h>
#include<iostream>
usingnamespacestd;
CMessageDequeue<int>qq(5);
void*get_thread(void*parg);
void*put_thread(void*parg);
void*get_thread(void*parg)
{
while(true)
...{
inta=-1;
if(!qq.pop_front(a,true,1000))...{cout<<"popfailed.size="<<qq.size()<<
上一页123下一页
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。 |