线程问题 如果在VC++中要创建多个线程,加入创建2个,是不是写一个AfxBeginThread,然后复制一下,还是写一个AfxBeginThread,后面写两个线程的名字呢,请高手指点一下!!谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接CreateThread,再sleep,重复两次即可。 可是我用的是AfxBeginThread,不想变,这样怎么创建两个线程呢 直接用CreateThread吧,如果是同一个线程函数,创建2个线程,那么就用2楼的,如果是不同的线程函数,那就必需:::CreateThread(...);::CreateThread(...);..............来创建每一个线程了。随便找点多线程编程的资料看看吧,这个问题不是一两句话讲完的。 方法是一样的,只不过创建函数不同而已,afxbeginthread内部使用的还是CreateThead,可以看看他的源代码就清楚了。 CWinThread * mTrdDown2 = NULL;mTrdDown2 = AfxBeginThread()API中有许多函数,关于线程也很多,看了一些资料头晕晕的,可是还是不知道怎么创建多个线程,我这里有一个大的程序,他里面是应该有多线程的,程序里面只有AfxBeginThread,但是我看不出来他是怎么创建两个线程的,例如上面两条语句又涉及到CWinThread ,不知道是什么意思,又是初学,所以还是直接告诉我该怎么用AfxBeginThread创建两个线程吧,说说框架或者流程就行,鉴于本人初学,大家请体谅!在此小妹谢谢大家了!! 如果你要创建的线程完成的功能一样的话,完全可以用循环创建例如:for(int i = 0; i < 10; i ++){ AfxBeginThread(...);}这样就可以创建10个线程了,你可以保存返回的句柄(CreateThread)或指针(AfxBeginThread),然后可以在以后对线程进行操作。 莫非楼主的意思是通过一次AfxBeginThread()来完成创建两个线程 ???这个比较先进 我是不懂的了 我的意思是怎么样创建两个线程,如果创建两个线程就是用两个AfxBeginThread()吗?还是怎么样?不是很清楚,请指教!! 如果是两个线程,并且两个线程函数不同的功能,那么就是如下了:AfxBeginThread(...); // 第一个线程AfxBeginThread(...); // 第二个线程需要创建多少个线程,就在需要的地方调用这个AfxBeginThread(...) 哎,楼主多看看线程的基本知识吧CWinThread * mTrdDown2 = NULL;mTrdDown2 = AfxBeginThread() 是句柄啊,你想创建多个,那就多几个这样子的语句啊AfxBeginThread()里边是你的线程函数,如果线程函数不是同一个,那两个线程就没有什么关系了,如果涉及到对同一资源的操作,那么就需要线程同步之类的啊,例如利用事件对象同步等。用MFC是吧,都可以啊建议多看看书,好多资料啊,别看多了,某一本书上的搞懂就是了 CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );这里只有第一个参数是线程函数地址,你要创建什么线程自然就要就调用一次这个函数;难不成你真的想调用一次就创建了两个线程???????不知道你想要做什么。当然,第一个参数是地址,不知道可不可以传递一个结构体指针进去,结构体里面有多个线程地址(麻烦?画蛇添足?)。高手来讲解下。 如果你用的是纯粹的API,你可以放心的用CreateThread如果你用VC的C++标准库,你最好使用_beginthread如果你用了MFC,你最好使用AfxBeginThread我觉得你的问题已经得到回答了就是调用两次AfxBeginThread你可以通过这个函数返回的指针对这些线程进行一些控制 handle1=AfxBeginThread((AFX_THREADPROC)ThreadFunc1,...);handle2=AfxBeginThread((AFX_THREADPROC)ThreadFunc2,...);DWORD WINAPI ThreadFunc1(LPVOID lpParam){//线程1处理工作}DWORD WINAPI ThreadFunc2LPVOID lpParam){//线程2处理工作}看样子你是MFC,所以线程函数得是static的 潜水时间太长了,咱也发篇原创。VC与Matlab混合编程——基于编译m函数为DLL的方法 ATL错误,很是不解,请高手来排除错误 急,关于下载的问题 关于installshield问题,急! 如何判断一个字符串是合法的文件名 数据库SQL2000 头文件在vc中应该怎么写 MFC ODBC 数据访问问题 static 全局变量问题?求助!!! 程序编译问题 unicode下得到的主程序路径不能转化成char*!??? 得到的listview header某一列名字总是为空,求解~~
::CreateThread(...);
..............
来创建每一个线程了。随便找点多线程编程的资料看看吧,这个问题不是一两句话讲完的。
mTrdDown2 = AfxBeginThread()
API中有许多函数,关于线程也很多,看了一些资料头晕晕的,可是还是不知道怎么创建多个线程,我这里有一个大的程序,他里面是应该有多线程的,程序里面只有AfxBeginThread,但是我看不出来他是怎么创建两个线程的,例如上面两条语句又涉及到CWinThread ,不知道是什么意思,又是初学,所以还是直接告诉我该怎么用AfxBeginThread创建两个线程吧,说说框架或者流程就行,鉴于本人初学,大家请体谅!在此小妹谢谢大家了!!
for(int i = 0; i < 10; i ++)
{
AfxBeginThread(...);
}
这样就可以创建10个线程了,你可以保存返回的句柄(CreateThread)或指针(AfxBeginThread),然后可以在以后对线程进行操作。
这个比较先进 我是不懂的了
AfxBeginThread(...); // 第一个线程
AfxBeginThread(...); // 第二个线程
需要创建多少个线程,就在需要的地方调用这个AfxBeginThread(...)
CWinThread * mTrdDown2 = NULL;
mTrdDown2 = AfxBeginThread()
是句柄啊,你想创建多个,那就多几个这样子的语句啊
AfxBeginThread()里边是你的线程函数,如果线程函数不是同一个,那两个线程就没有什么关系了,如果涉及到对同一资源的操作,那么就需要线程同步之类的啊,例如利用事件对象同步等。用MFC是吧,都可以啊建议多看看书,好多资料啊,别看多了,某一本书上的搞懂就是了
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
这里只有第一个参数是线程函数地址,你要创建什么线程自然就要就调用一次这个函数;
难不成你真的想调用一次就创建了两个线程???????
不知道你想要做什么。
当然,第一个参数是地址,不知道可不可以传递一个结构体指针进去,结构体里面有多个线程地址(麻烦?画蛇添足?)。
高手来讲解下。
如果你用VC的C++标准库,你最好使用_beginthread
如果你用了MFC,你最好使用AfxBeginThread我觉得你的问题已经得到回答了
就是调用两次
AfxBeginThread
你可以通过这个函数返回的指针对这些线程进行一些控制
handle2=AfxBeginThread((AFX_THREADPROC)ThreadFunc2,...);DWORD WINAPI ThreadFunc1(LPVOID lpParam)
{
//线程1处理工作
}DWORD WINAPI ThreadFunc2LPVOID lpParam)
{
//线程2处理工作
}看样子你是MFC,所以线程函数得是static的