- 论坛徽章:
- 2
|
本帖最后由 knull 于 2015-05-06 16:49 编辑
最近,用到pthread_cond_timedwait函数,发现CPU消耗很高;
写了个测试代码,经过对比,发现一个很奇怪的问题:
1、在64位机器上,编译64位的程序,测试发现,CPU占用趋向于0;
2、在64位机器上,编译32位程序,测试发现,CPU占用趋向于 100%;
3、在32位机器上,编译32位程序,测试发现,CPU占用趋向于 100%;
对比发现,32位的程序,会导致CPU占用趋向于100%;不知道为什么?请求大牛帮忙看下。
下面附上测试代码- #include <sys/time.h>
- #include <time.h>
- #include <pthread.h>
- pthread_mutex_t m_lock = PTHREAD_MUTEX_INITIALIZER;
- pthread_cond_t m_cond = PTHREAD_COND_INITIALIZER;
- void timedwaitEvent(int millisec = 0)
- {
- //1-get time;
- struct timeval temp;
- gettimeofday(&temp,0);
- if (millisec < 0)
- {
- millisec = 30;
- }
- temp.tv_usec = temp.tv_usec + millisec*1000;
- if (temp.tv_usec > 1000*1000)
- {
- ++temp.tv_sec;
- temp.tv_usec -= 1000*1000;
- }
-
- //2-set time;
- struct timespec abstime;
- abstime.tv_sec = temp.tv_sec;
- abstime.tv_nsec = (temp.tv_usec)*1000;
- pthread_mutex_lock( &(m_lock));
- pthread_cond_timedwait(&m_cond, &(m_lock),&abstime);
- pthread_mutex_unlock( &(m_lock));
- }
- int main()
- {
- while (true)
- {
- timedwaitEvent();
- }
- return 0;
- }
复制代码 |
|