gem*_*xas 3 c++ multithreading visual-studio-2010
我想在不同的线程上运行一个具有不同参数的函数:
int threads = 3;
int par1[] = {1, 2, 3};
int par2[] = {4, 5, 6};
for (int i=0; i<threads; i++){
//new_thread function(par1[i], par2[i]);
}
Run Code Online (Sandbox Code Playgroud)
我对线程一无所知.我试图做一些Windows API(不能使用其他库),但它不起作用.我该如何实现呢?并且可以在编程时启动未知数量的线程(动态创建线程)?
Naw*_*waz 12
Windows的一个示例,
#include <Windows.h>
struct thread_data
{
int m_id;
thread_data(int id) : m_id(id) {}
};
DWORD WINAPI thread_func(LPVOID lpParameter)
{
thread_data *td = (thread_data*)lpParameter;
cout << "thread with id = " << td->m_id << endl;
return 0;
}
int main()
{
for (int i=0; i< 10; i++)
{
CreateThread(NULL, 0, thread_func, new thread_data(i) , 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,每个线程获得不同的数据,即类型thread_data
,它作为参数传递给线程函数thread_func()
.
阅读这些以了解如何在Windows上创建线程:
http://msdn.microsoft.com/en-us/library/ms682516(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms682453(v=vs.85).aspx
此外,您可能也喜欢这个建议:
我对线程一无所知。
这是个问题。线程是在没有至少某些理论背景的情况下进行实验通常会导致灾难的领域之一。线程有很多可能出错的地方,但是直到很久以后才发生。
我建议您先阅读一本有关多线程的书,或者在开始之前在线阅读一些文章。
如果您有兴趣使用多线程来提高效率,那么Herb Sutter的专栏文章将很适合您。然后是Blaise Barney撰写的出色的《并行计算入门》。
归档时间: |
|
查看次数: |
31936 次 |
最近记录: |