当前位置: 技术问答>linux和unix
高分求pthread线程挂起程序!!!
来源: 互联网 发布时间:2017-02-01
本文导语: 高人们,我在写posix线程程序时遇到问题解决不了啦,现高分求解答: 要求: 写两个posix线程挂起与恢复的函数pthread_suspend(pthread_t pid),pthread_resume(pthread_t pid),也就是说我们可以通过调用这两个函数来手动 挂起/恢...
高人们,我在写posix线程程序时遇到问题解决不了啦,现高分求解答:
要求:
写两个posix线程挂起与恢复的函数pthread_suspend(pthread_t pid),pthread_resume(pthread_t pid),也就是说我们可以通过调用这两个函数来手动 挂起/恢复 任意已知id的线程,当然这些线程都是在同一个进程内的,而且创建线程后线程函数里面不能手动添加挂起点,不管它是个什么样的线程,不管它的入口函数是什么,让它啥时候挂起就啪的挂起,让它啥时候恢复就嗖的恢复,那位大神可以写个程序,或者写个demo程序,贴出来跟大家交流一下,只要我能运行或者受到启发能自己实现了,我把积分都给你!!相信这个话题也算是个老话题了,我现在需要这个功能,自己却实现不了,郁闷阿!!!
要求:
写两个posix线程挂起与恢复的函数pthread_suspend(pthread_t pid),pthread_resume(pthread_t pid),也就是说我们可以通过调用这两个函数来手动 挂起/恢复 任意已知id的线程,当然这些线程都是在同一个进程内的,而且创建线程后线程函数里面不能手动添加挂起点,不管它是个什么样的线程,不管它的入口函数是什么,让它啥时候挂起就啪的挂起,让它啥时候恢复就嗖的恢复,那位大神可以写个程序,或者写个demo程序,贴出来跟大家交流一下,只要我能运行或者受到启发能自己实现了,我把积分都给你!!相信这个话题也算是个老话题了,我现在需要这个功能,自己却实现不了,郁闷阿!!!
|
void CPrcThread ::suspend()
{
ifdef WIN32
//do windows specific things here...
#endif
#ifdef __linux__
pthread_mutex_lock(&mutex);
flag--;
pthread_mutex_unlock(&mutex);
#endif
}
void CPrcThread ::resume()
{
#ifdef WIN32
//do windows specific things here...
#endif
#ifdef __linux__
pthread_mutex_lock(&mutex);
flag++;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
#endif
}
void* CPrcThread ::threadFunc(void* pParameter)
{
while(1)
{
#ifdef WIN32
//do windows specific things here...
//no member variables accessed here so its ok...
#endif
#ifdef __linux__
pthread_mutex_lock(&mutex);
while(flag