gpt4 book ai didi

c - 线程编程...终端无输出

转载 作者:行者123 更新时间:2023-11-30 18:20:32 25 4
gpt4 key购买 nike

我正在进行线程编程并尝试实现蒙特卡罗技术来计算其中的 Pi 值。我编译了代码并且没有错误,但是当我执行时我没有得到任何输出。如有错误请指正。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <pthread.h>

#define frand() ((double) rand() / (RAND_MAX))
#define MAX_LEN 1353
const size_t N = 4;
float circlePoints=0;
void* point_counter(void *param){
float xcord;
float ycord;
while(MAX_LEN){

xcord=frand();
ycord=frand();
float cord = (xcord*xcord) + (ycord*ycord);

if(cord <= 1){
circlePoints++;}
}
}

int main()
{
printf("out");
size_t i;
pthread_t thread[N];

srand(time(NULL));
for( i=0;i <4;++i){
printf("in creating thread");
pthread_create( &thread[i], NULL, &point_counter, NULL);
}
for(i=0;i <4;++i){
printf("in joining thread");
pthread_join( thread[i], NULL );
}
for( i=0;i <4;++i){
printf("in last thread");
float pi = 4.0 * (float)circlePoints /MAX_LEN;

printf("pi is %2.4f: \n", pi);
}
return 0;
}

最佳答案

您在这里遇到了无限循环:

while(MAX_LEN){

因为 MAX_LEN 一直都是非零。

至于为什么在此之前没有看到任何输出,请参阅 Why does printf not flush after the call unless a newline is in the format string?

关于c - 线程编程...终端无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com