| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 787 人关注过本帖
标题:求助一个多线程问题!!
只看楼主 加入收藏
大头米米
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:6 
求助一个多线程问题!!

最近学多线程,很多问题搞不明白,而且都很初级,希望各位不要笑话,
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
DWORD WINAPI ThreadFunc1(LPVOID);
//DWORD WINAPI ThreadFunc2(LPVOID);
int main(){
HANDLE hThrt1;
HANDLE hThrt2;
DWORD threadID,exitCode1=0,exitCode2=0;
hThrt1=CreateThread(NULL,
0,
ThreadFunc1,
(LPVOID)1,
0,
&threadID);
if(hThrt1){
printf("threadfun1 has been begin\n");
}
hThrt2=CreateThread(NULL,
0,
ThreadFunc1,
(LPVOID)2,
0,
&threadID);
if(hThrt2){
printf("threadfun2 has been begin\n");
}
while(0){
printf("printf any key to exit\n");
getch();
GetExitCodeThread(hThrt1,&exitCode1);
GetExitCodeThread(hThrt2,&exitCode2);
if(exitCode1==STILL_ACTIVE){
puts("threadfun1 still active\n");
}
if(exitCode2==STILL_ACTIVE){
puts("threadfun2 still active\n");
}
if(exitCode1!=STILL_ACTIVE&&exitCode2!=STILL_ACTIVE){
// printf("all has been exit\n");
break;
}
CloseHandle(hThrt1);
CloseHandle(hThrt2);

}

return EXIT_SUCCESS;

}
DWORD WINAPI ThreadFun1(LPVOID n){
Sleep((DWORD)n*1000*2);
return (DWORD)n*10;
}
编译没有错误,可是一运行就这样:
--------------------Configuration: 实验8 - Win32 Debug--------------------
Linking...
实验8.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall ThreadFunc1(void *)" (?ThreadFunc1@@YGKPAX@Z)
Debug/实验8.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

实验8.exe - 2 error(s), 0 warning(s)
为什么啊

搜索更多相关主题的帖子: 线程 
2007-09-26 18:04
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
程序是你抄来的吧,而且你没有看懂。


这个函数你定义了没:
DWORD WINAPI DWORD WINAPI ThreadFunc1(LPVOID);
2007-09-26 18:12
jiangzw625
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2006-3-27
收藏
得分:0 
DWORD WINAPI ThreadFun1(LPVOID n) --你声明的是 DWORD WINAPI ThreadFunc1(LPVOID);

马马乎乎
2007-09-26 19:41
大头米米
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-23
收藏
得分:0 
是我在课件上看到的例子, 刚才又看了一遍,函数名前后不一致,所以有问题,现在好了,不过还要谢谢两位,还有DWORD WINAPI DWORD WINAPI ThreadFunc1(LPVOID);是什么函数,为什么两个DWORD WINAPI
2007-09-27 21:55
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

上次没有仔细看,原来你定义但是写DWORD WINAPI ThreadFunc1(LPVOID);时把名字写错了ThreadFunc1写成了ThreadFun1,掉了一个'c',我把两个放一起对比才发现的。

你定义一个新的线程,这个函数就是新线程的入口。
哪里有两个DWORD WINAPI,你看错了吧。

2007-09-27 22:41
大头米米
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-9-23
收藏
得分:0 

你看看你给我的回复,不是有两个吗

2007-09-28 08:15
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
不要意思
可能是ctrl+c和ctrl+v的过程中出的错。
2007-09-28 12:37
快速回复:求助一个多线程问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016730 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved