QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1734|回复: 1

关于多线程占用CPU的问题!

[复制链接]
发表于 2006-6-30 09:47:14 | 显示全部楼层 |阅读模式
在linux下面做了一个很小的多线程程序,很粗糙,用监视工具查看运行这个小程序时的CPU占用率100%, 请个位指点一下是什么导致的. 刚接触linux多线程,
/*  thread.c */
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

pthread_mutex_t mutex;
pthread_cond_t  cond;

void * child1(void *arg)
{
    int count = 0;
    do
    {
       count ++;
       pthread_cond_signal(&cond);
       printf("cond signal = %d\n", count);
    }while(1);
}

void *child2(void *arg)
{
   int count;
   while(1)
   {
        count ++;
       pthread_mutex_lock(&mutex);
       pthread_cond_wait(&cond,&mutex);
       printf("thread 2 condition applied\n");
       pthread_mutex_unlock(&mutex);
    }
}

int main(void)
{
        pthread_t tid1,tid2;

        printf("hello, condition variable test\n");
        pthread_mutex_init(&mutex,NULL);
        pthread_cond_init(&cond,NULL);
        pthread_create(&tid1,NULL,child1,NULL);
       
        pthread_create(&tid2,NULL,child2,NULL);

        sleep(1000);
        pthread_exit(0);
}
/* gcc -o thread thread.c -lpthread */
发表于 2006-7-5 05:06:22 | 显示全部楼层
当然CPU占用100%,child1线程在不断的count++和pthread_cond_signal...
而且此count test也是有问题, count++的外层没有任何的lock/unlock,???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:25 , Processed in 0.041466 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表