|
|
1
15
我通常使用类的静态成员函数,并使用指向类的指针作为void*参数。然后,该函数可以执行线程处理,或者使用类引用调用另一个非静态成员函数。然后,该函数可以引用所有类成员,而无需使用笨拙的语法。 |
|
|
2
23
这可以通过使用Boost库来实现,如下所示:
笔记:
在C++ 11中,您可以做同样的操作,但不需要
|
|
|
3
11
您必须使用void*参数引导它: class A
{
static void* StaticThreadProc(void *arg)
{
return reinterpret_cast<A*>(arg)->ThreadProc();
}
void* ThreadProc(void)
{
// do stuff
}
};
...
pthread_t theThread;
pthread_create(&theThread, NULL, &A::StaticThreadProc, this);
|
|
|
4
3
我使用了上述三种方法。 当我在C++中首次使用线程时,我使用了 静态成员函数 然后 朋友功能 最后 增强图书馆 . 目前我更喜欢助推。在过去的几年里,我成了一个狂热的鼓吹者。 Boost是C++,因为CPAN是Perl。:) |
|
|
5
0
Boost库提供了一种复制机制,有助于传输对象信息 到新的线程。在另一个boost示例中,boost::bind将使用指针进行复制,指针也只是被复制。因此,您必须注意对象的有效性,以防止指针悬空。如果您实现了operator()并提供了一个复制构造函数,并直接传递对象,那么您不必关心它。 一个更好的解决方案,可以避免很多麻烦:
另一个boost示例在堆上创建线程对象,尽管没有意义。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |