我想使用模板类参数进行线程化,但是我不知道如何使用模板类作为线程方法的参数。
我已经尝试过在模板类中制作方法,但是我不想要它。人们通常不使用此解决方案。
//....
//Linked List code
//.....
void func1(slist<T> s){
for (int i = 0; i < 1000; i++) {
s.push_(i);
}
} // this part is problem of my code.
int main() {
int i;
slist<int> s;
thread t1(func1,s); //Compile error.
func1(s); // here, too.
return 0;
}
我希望线程与链表竞争的结果。
答案 0 :(得分:3)
通用解决方案:
Await (CType(user, SocketGuildUser)).AddRoleAsync(role)
或者您可以专门研究一种特定类型:
template<typename T>
void func1(slist<T>& s){
for (int i = 0; i < 1000; i++) {
s.push_(i);
}
}
(还请注意,您可能希望传递对列表的引用,而不是副本)
答案 1 :(得分:1)
当您想让线程接受模板时,该函数也应该被模板化。
template <typename T>
void func1(slist<T> s){ // most likely you need to pass by reference
for (int i = 0; i < 1000; i++) {
s.push_(i);
}
}
在main中调用函数时,
int main() {
int i;
slist<int> s;
thread t1(func1<int>,s); //t1 needs to know which type it needs to instantiate of func1
t1.join(); // let the thread finish
return 0;
}