每个人。我写的代码如下:
std::thread t1(cmdThread);
t1.detach();
for (int n = 0; n < tCount; n++)
{
std::thread t1(sendThread,n+1);
t1.detach();
}
CmdThread和sendThread不同。所有名为t1的线程,但它们正常工作。这让我很困惑。在for循环中,我想创建4个线程。C++是否允许用户创建相同名称的线程,并且这些线程也可以很好地分离?
我可以创建具有相同名称的C++线程吗?
在C++中,没有线程有名称的概念。
所有名为t1 的线程
t1
是一个变量。变量的类型是std::thread
,它是一个线程包装器。t1
是循环体的局部变量,因此变量在每次迭代中都命名一个新对象。
在初始化过程中,由变量t1
命名的线程包装器会创建一个线程,然后该线程将归包装器所有。包装器创建的线程没有名称。当线程从t1
分离时,包装器不再拥有线程,分离的线程也没有所有者。在迭代结束时,线程包装器被销毁。在下一次迭代中,将重复此过程。
你可以做你在示例程序中做的事情。