c - Pthreads数组 block 分布

标签 c arrays pthreads iteration

正在用 C 语言开发一个学校项目,使用 Pthreads 将一维数组分解为 tRows 和 tCols 的子矩阵。整个数组的大小为 wRows 和 wCols。假设 wCols = 4、wRows = 4、tCols = 2 和 tRows = 2。如果数组的输入是整数 1-16,我们将得到网格:

1  2  3  4
5  6  7  8
9 10 11 12
1314 15 17

Thus Thread 0 would process the subgrid
1 2 
5 6

Thread 1
3 4
7 8 

Thread 2 
9  10
13 14

Thread 3
11 12
15 17

我将如何使用两个 for 循环迭代一维数组以根据正在使用的线程获取这些值? 我觉得我需要计算两个线程的开始和结束,但我完全坚持这一点。

如有任何帮助,我们将不胜感激。

最佳答案

pthread_create()的第四个参数被转发到线程启动函数作为其参数。这样做的目的是将任何必要的线程特定数据传递给线程,例如矩阵补丁的起始行和列。

在这种情况下,向每个线程传递一个指向其矩阵补丁最顶部、最左边元素的指针会特别干净。假设每个线程都知道补丁的大小和矩阵中的列数,这足以让它确定行数和列数。

关于c - Pthreads数组 block 分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165579/

相关文章:

c - 无法使用 SCHED_RR 在创建时设置 pthread 优先级

c - 整数溢出项目 euler 8 - C

c++ - 如何在C++中计算给定数字中的数字数量

c - C 中的数组内存分配取决于命名约定?

c - 不同的执行顺序导致Pthread程序性能的差异

c - 进程中的特定线程是否可以创建多个作业?

c - 将字符串中所有 s1 替换为 s2 的程序

C 编程 : How can I check if given number is exactly for digits, 不多/不少?

c++ - 在 C++ 中返回生成的数组

javascript - 我可以在javascript中将整个数组插入到其他数组位置吗?