【发布时间】:2016-02-28 07:57:25
【问题描述】:
我正在编写一个程序,该程序使用 8 个线程对 1 到 10000 的数字求平方。我的大部分代码已经编写完毕,但我的问题是如何指定哪些线程对哪些数字求平方。我也是多线程的新手。澄清:
我使用 8 个线程将数字从 1 平方到 100000 并将它们写入文件。打开文件和关闭文件是可以的,但是从每个线程写入每个方块是这里等式的一部分。这是我第一个使用 pthread 的程序,所以我假设您需要告诉每个线程要按顺序平方的数字
理想情况下我想要:
线程 1:1^2
线程 2:2^2
线程 3:3^2
等到 10000...
在我的主函数中,创建函数然后等待线程完成的代码是这样的:
for (i = 0; i < NUMBER_OF_THREADS; i++) {
printf("Main here. Creating thread %luu\n", i);
status = pthread_create(&threads[i], NULL, square_root_integer, (void *) i);
if (status != 0){
printf("Error: pthread_create returned error code %0ld\n", status);
exit (-1);
}
}
for (i = 0; i < NUMBER_OF_THREADS; i++){
if (pthread_join(threads[i], NULL)){
printf("Thread %lu failed to join\n",i);
}
}
线程将运行的 void 函数是这样的:
void *square_integer(void *tid)
所以不知何故,在主函数中,我需要将需要平方的数字传递给“square_integer”函数。
任何帮助都会很棒,如果你们需要更多信息,请告诉我!
【问题讨论】:
-
你的标题是“平方根”;一些评论说“正方形”。该函数再次显示“平方根”。它是哪一个?您还提到了 8 个线程,但也讨论了 10,000 个线程 - 再说一遍,您在做什么?
-
抱歉各位,来晚了,我编辑了帖子。我将数字打印到一个文件中,这是我已经编写的代码。我使用 8 个线程将数字从 1 平方到 100000。这是我第一个使用 pthread 的程序,所以我假设您需要告诉每个线程要按顺序平方的数字。
标签: c multithreading square-root