1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > c语言 如何调用void函数 在C中从main调用void*函数

c语言 如何调用void函数 在C中从main调用void*函数

时间:2023-06-01 13:17:18

相关推荐

c语言 如何调用void函数 在C中从main调用void*函数

目前我正在研究一个程序,它使用线程来计算平方根的总和.我的程序工作,但其中一个要求是使用主线程来查找初始值,并且一旦我从main调用函数Void*calc,程序就会中断.是否有某种方法可以进行这样的函数调用?这是因为函数是指针吗?任何帮助表示赞赏.

#include

#include

#include

#include

#define NUM_THREADS 3

int ARGV;

pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;

double total = 0;

void *calc(void* t){

int ph = (int)t + 1;

int start, stop, interval_size;

interval_size = ARGV/(NUM_THREADS + 1);

start = ((ph) * interval_size) + 1;

stop = (ph * interval_size) + 1;

double ttl;

int i;

for (i = start; i <= stop; i++){

ttl = ttl + sqrt(i);

printf("Total Thread %i %lf\n", ph, ttl);

}

pthread_mutex_lock(&m);

total = total + ttl;

pthread_mutex_unlock(&m);

pthread_exit(NULL);

}

int main(int argc, char* argv[]) {

int i;

double ttl;

ARGV = atoi(argv[1]);

pthread_t ti[NUM_THREADS];

calc(0);

for (i = 0; i < NUM_THREADS; i++) {

pthread_create(&ti[i], NULL, calc,(void *)i);

}

/*for (i = 1; i <= (ARGV / 4) ; i++){

ttl = ttl + sqrt(i);

}*/

for (i = 0; i < NUM_THREADS; i++) {

pthread_join(ti[i], NULL);

}

total = total + ttl;

printf("Result: %lf\n", total);

}

程序中断,因为函数似乎只调用一次,而不是每个线程使用该函数.打印出的唯一值是一些模糊不正确的数字.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。