【发布时间】:2022-01-13 06:42:52
【问题描述】:
我有一个可以产生任意数量线程的应用。所以我希望这段代码变成多线程的
void *some_thread_fuction(void *param)
{
struct some_struct *obj=(struct some_struct *)param;
int m=obj->m;
int n=...
double t[m+2][n+2]={0};
for (i=0; i <= m+1; i++) {
for (j=0; j <= n+1; j++) {
t[i][j] = 30.0;
}
}
for (i=1; i <= m; i++) {
t[i][0] = 40.0;
t[i][n+1] = 90.0;
}
for (j=1; j <= n; j++) {
t[0][j] = 30.0;
t[m+1][j] = 50.0;
}
memcpy(global_t,t,...);
}
我有一个简单的推理问题,为什么我喜欢让它成为一个多线程程序。但这是有道理的,因为如果我有 5 个线程(假设我在程序参数中在程序启动时产生多少线程)并且 n=20 m=20 也在程序启动时作为参数输入,那么我可以尝试工作在一个线程中为 0-4,在第二个线程中为 5-8,依此类推,直到第一个循环的最后一次迭代中为 16-20(只是一个示例,因为 m=etc n=etc 和线程数可以是用户提供的任何值)。
但更重要的是,我很难理解如何剖析三个for 循环,以将处理工作量分配给多个线程,以完成此代码中的所有循环。这是一个简单的代码,所以它只是一个真实的例子,我很难理解如何在这个场景的线程程序的代码中完成它。
【问题讨论】:
-
所以你想产生线程并在矩阵中给出开始和结束偏移作为线程参数?
-
@kiner_shah 听起来你明白。感谢您的评论
-
@kiner_shah 很简单
标签: c multithreading