如何在 C++ 中使用 boost 库创建 3 个并行执行线程(Visual Studio 2019)?
How to create 3 threads of parallel execution using boost library in C++ (in Visual Studio 2019)?
我正在尝试使用 boost 库在 Visual Studio 2019 年创建 3 个执行线程。
3个线程函数各有一个while(1)循环,以保持连续执行。
但是,当我执行程序时,我看到只有第一个线程被执行(并且命中断点)。
所以我知道第一个线程正在创建,并且执行保留在第一个函数的 while(1) 循环内,其余 2 个线程未执行(未命中断点)。
在这种情况下,我该如何修改代码以获取所有 3 个线程运行?
使用的部分代码片段如下:
myfunction()
{
// Some code here..
boost::thread t(&myclass::kafkaSvc1ProducerThread, this, rk);
t.join();
boost::thread t2(&myclass::kafkaSvc2ProducerThread, this, rk);
t2.join();
boost::thread t3(&myclass::kafkaSvc3ProducerThread, this, rk);
t3.join();
// Some code here..
}
func1(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc1ProducerThread()
{
func1();
}
func2(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc2ProducerThread()
{
func2();
}
func3(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc3ProducerThread()
{
func3();
}
推迟加入话题:
boost::thread t(&myclass::kafkaSvc1ProducerThread, this, rk);
boost::thread t2(&myclass::kafkaSvc2ProducerThread, this, rk);
boost::thread t3(&myclass::kafkaSvc3ProducerThread, this, rk);
t.join();
t2.join();
t3.join();
考虑使用 thread_group
。
我正在尝试使用 boost 库在 Visual Studio 2019 年创建 3 个执行线程。 3个线程函数各有一个while(1)循环,以保持连续执行。
但是,当我执行程序时,我看到只有第一个线程被执行(并且命中断点)。 所以我知道第一个线程正在创建,并且执行保留在第一个函数的 while(1) 循环内,其余 2 个线程未执行(未命中断点)。
在这种情况下,我该如何修改代码以获取所有 3 个线程运行?
使用的部分代码片段如下:
myfunction()
{
// Some code here..
boost::thread t(&myclass::kafkaSvc1ProducerThread, this, rk);
t.join();
boost::thread t2(&myclass::kafkaSvc2ProducerThread, this, rk);
t2.join();
boost::thread t3(&myclass::kafkaSvc3ProducerThread, this, rk);
t3.join();
// Some code here..
}
func1(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc1ProducerThread()
{
func1();
}
func2(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc2ProducerThread()
{
func2();
}
func3(1)
{
while(1)
{
// Some code here...
}
}
void kafkaSvc3ProducerThread()
{
func3();
}
推迟加入话题:
boost::thread t(&myclass::kafkaSvc1ProducerThread, this, rk);
boost::thread t2(&myclass::kafkaSvc2ProducerThread, this, rk);
boost::thread t3(&myclass::kafkaSvc3ProducerThread, this, rk);
t.join();
t2.join();
t3.join();
考虑使用 thread_group
。