【发布时间】:2017-04-18 21:24:26
【问题描述】:
我现在已经完成了我的光线追踪器,但我正在尝试学习线程以优化渲染时间。使用 int8_t *(R/G/B/A 为 4 int8_t / 像素)表示我的窗口 im 的每个像素。这是我尝试做的一个示例:
设置的线程数:4
[0]-------1[2]-------[3][4]-------[5][6]-- --[7]
[线程 1][线程 2][线程 3][线程 4]
对于 8 个数组,每个线程占用 2 个单元,但我希望它们同时在数组上工作。如果每个线程都在特定部分上工作,这可能吗?
在这个screen(ptr * 是 int8_t *)上,您可以看到每个线程对数组有一个影响区域(实际数组部分的开始位置到结束位置)。
如果每个线程都在特定部分上工作,这可能吗?
感谢您的回复。
【问题讨论】:
-
我建议您看看其他一些关于 SO 的问题,这些问题涉及管理对数组的多线程访问,例如:stackoverflow.com/questions/14925294stackoverflow.com/questions/23315200
-
我已经读过了,但这些并不能真正解决我的问题,谢谢你的帮助
-
我很好奇 - 你为什么使用
int8_t(而不是uint8_t)? “负数量的红色、绿色或蓝色”很少有任何意义。 -
好建议,我的错误,谢谢!
-
一般来说,线程只有在程序出现延迟时才真正有用,而其他一些“线程”仍然可以做有用的工作。操作数组(通常)不涉及延迟,因此多线程会由于上下文切换等原因导致程序变慢。
标签: c arrays multithreading variables optimization