您的位置:首页 > 理论基础 > 计算机网络

Linux下线程的挂起和恢复 http://blog.chinaunix.net/uid-21765995-id-1815655.html

2015-12-05 14:12 627 查看
Linux下线程的挂起和恢复 2009-08-27
16:29:01

分类: LINUX

POSIX的Linux操作系统没有提供线程挂起和恢复的例程,在网上找了找,看到一个老外写的程序,感觉想法不错,放在这里大家分享一下。理论上应该可以实现,不过我没有试,给大家提供一个参考。 (在读取缓存里的数据时,当缓存中没有数据最好把线程挂起)

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 <= 0)

{

pthread_cond_wait(&cond, &mutex);

}

pthread_mutex_unlock(&mutex);

#endif

//actual thread work here

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: