C++ 确定线程数和未确定线程数有什么区别?
确定螺纹数时的区别是什么,例如:C++ 确定线程数和未确定线程数有什么区别?,c++,c,multithreading,pthreads,C++,C,Multithreading,Pthreads,确定螺纹数时的区别是什么,例如: for (i*10){ ... pthread_create(&thread[i], NULL, ThreadMain[i], (void *) xxx); ... } 当它不确定时,就像这样: ... pthread_create(&threadID, NULL, ThreadMain, (void *) xxx); ... 就我而言,数字可以从1变为10。如果我使
for (i*10){
...
pthread_create(&thread[i], NULL, ThreadMain[i], (void *) xxx);
...
}
当它不确定时,就像这样:
...
pthread_create(&threadID, NULL, ThreadMain, (void *) xxx);
...
就我而言,数字可以从1变为10。如果我使用第一种方法,我需要创建10倍,例如:
void *ThreadMain1(void *xxx)
{
...
}
直到
void *ThreadMain10(void *xxx)
{
...
}
但是如果我使用第二种方法,我只需要创建:
void *ThreadMain(void *xxx)
{
...
}
那么哪一个是正确的呢
感谢您的时间和回复,如果线程正在执行相同的任务,它们应该使用相同的功能(可能有不同的输入),因此一个ThreadMain是正确的方式。如果线程正在执行相同的任务,它们应该使用相同的功能(可能有不同的输入),那么一个ThreadMain是正确的方式。
- 执行相同任务的线程应该使用相同的函数
- 执行不同任务的线程应该使用不同的函数
- 执行相同任务的线程应该使用相同的函数
- 执行不同任务的线程应该使用不同的函数
pthread_create(&thread[i], NULL, ThreadMain[1], (void *) xxx);
不调用名为ThreadMain1的函数,除非您以前按照以下步骤执行过操作:
FuncPtr_t ThreadMain[10];
ThreadMain[1] = &ThreadMain1;
如果您只是试图创建10个运行相同任务的线程,那么第二种方法是正确的 除非ThreadMain被定义为函数指针数组,否则第一个方法是无效语法。即:
pthread_create(&thread[i], NULL, ThreadMain[1], (void *) xxx);
不调用名为ThreadMain1的函数,除非您以前按照以下步骤执行过操作:
FuncPtr_t ThreadMain[10];
ThreadMain[1] = &ThreadMain1;
如果您只是试图创建10个运行相同任务的线程,那么第二种方法是正确的 创建10个线程肯定是错误的。为什么?那么你有什么建议?感谢创建10个线程肯定是错误的。为什么?那么你有什么建议?谢谢你!你是对的,这就是我遇到问题的原因。连接的数量取决于要模拟的问题(因为它可以有1个或更多),但限制为10个。事实上,我已经和同步这就是为什么我尝试两者。如果三个客户端连接,通信应按顺序同步,即每次交换1、2、3,直到第一个客户端终止,然后启动第二个客户端。。。这怎么可能?非常感谢你的回答。我真的不明白你想做什么。我认为你应该开始另一个话题,解释你想要实现什么,而不是你认为你应该如何实现它。也许你应该把线程数作为参数xxx来传递,但是如果你想按顺序完成事情,你可能根本不需要线程……对不起!你是对的,这就是我遇到问题的原因。连接的数量取决于要模拟的问题(因为它可以有1个或更多),但限制为10个。事实上,我已经和同步这就是为什么我尝试两者。如果三个客户端连接,通信应按顺序同步,即每次交换1、2、3,直到第一个客户端终止,然后启动第二个客户端。。。这怎么可能?非常感谢你的回答。我真的不明白你想做什么。我认为你应该开始另一个话题,解释你想要实现什么,而不是你认为你应该如何实现它。也许你应该把线程数作为参数xxx来传递,但是如果你想按顺序完成事情,你可能根本不需要线程。。。