gpt4 book ai didi

c - 多线程,每个线程都有唯一的变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:21 25 4
gpt4 key购买 nike

我正在尝试针对需要类似以下内容的问题实现多线程解决方案

  • 我创建了 'n' 个线程
  • 我有一个大小为“n - 1”的数组
  • 每个线程应该只访问它对应的数组元素(即线程 0 应该只影响数组的元素 0,线程 1 应该只影响元素 1,等等。)
  • 每个线程将执行通过索引“k”引用数组的相同函数

如何在每次创建线程时更改“k”以使其从 0 开始并在“n - 1”结束,以便每个线程只能访问其分配的数组元素?

最佳答案

这有效(在 POSIX 平台上......)并且是@Some Programmer Dude 在他的回答中提到的方法的实现。它应该是可移植的并且符合标准,只要实现提供 intptr_t 作为类型(它是可选的):

void *start_func( void *arg )
{
int myID = ( intptr_t ) arg;
.
.
.
return( NULL );
}

int main( int argc, char **argv )
{
.
.
.
pthread_t tid[ n ];
for ( int k = 0; k < n; i++ )
{
pthread_create( &tid[ k ], NULL, start_func, ( void * )( intptr_t ) k );
}
.
.
.
return( 0 );
}

您需要小心 sizeof( int ) 大于 sizeof( intptr_t ) 和您的循环值的任何体系结构 会溢出 intptr_t,但据我所知,这样的架构根本不存在。

关于c - 多线程,每个线程都有唯一的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43228933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com