快捷搜索:

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

您可能还会对下面的文章感兴趣: