小编MOM*_*Sir的帖子

pthread_cond_wait()不会让CPU睡眠?

所有

我有一个关于pthread_cond_wait()的问题.简而言之,我在一个进程中创建两个POSIX线程,如果我执行以下代码,为什么cpu利用率已满?

我对它进行实验,如果我在bool isNodeConnect3之前删除注释标记,程序似乎没有问题,CPU利用率几乎为0%,换句话说,theads将进入睡眠状态并且不花费CPU资源,这就是我的意思想.

这是一个数据识别问题吗?也许,但我不这么认为,因为我用"#pragma pack(push,1)... #pragma(pop)括起我的结构"你能给我一些建议吗?

环境主机操作系统是win7/intel 64位,客户操作系统是ubuntu 10.04LTS给客户操作系统提供"处理器核心数:4"以下是我的测试代码,你可以用
gcc -o program1 program1.c 构建和运行它- pthread && ./program1获取CPU利用率为25%.结果取决于您的设置.

非常感谢.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <pthread.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
#include <stdbool.h>


#pragma pack(push,1)
struct BUFF_TX{
    pthread_mutex_t mutex_lock;
    pthread_cond_t more;
};

struct AtreeNode{
    struct BUFF_TX buff_tx;

    bool isNodeConnect;                   
    bool isNodeConnect1;                  
    bool isNodeConnect2;                  
//  bool isNodeConnect3;  // important           

    pthread_t thrd_tx;          

};


struct AtreeNode treeNode[2];
int tmp[2];  

#pragma (pop)


void Thread_TX(int *nodeIdx) …
Run Code Online (Sandbox Code Playgroud)

c cpu sleep pthreads utilization

3
推荐指数
1
解决办法
2092
查看次数

标签 统计

c ×1

cpu ×1

pthreads ×1

sleep ×1

utilization ×1