看板Programming
标 题[问题] 请教一个thread的问题
发信站I-Shou University BBS (Mon Nov 13 02:28:18 2006)
转信站ptt!ctu-reader!Spring!news.nctu!news.ntu!news.au!news.isu!isu
小弟斗胆,请大家帮我看一下,我的thread哪边用错了
这是一个socket 程式, 其中 receive() 是用thread 来跑
此程式为client 端,他要接收来自server 端的文字讯息
而且也能发送文字讯息给 server
int fd; //global variable
void* receive(void* id) //让thread一直检查,资料是否能从 server 读取
{
char rcvbuf[1024]; //如果有资料从server来,那就print出来
int i;
while(1)
{
bzero(rcvbuf,sizeof(rcvbuf));
if( (i=read(fd,rcvbuf,sizeof(rcvbuf))) >0)
printf ("msg from [server]:%s",rcvbuf);
}
pthread_exit(NULL);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下这一段 是main() 中,关於thread的部份
pthread_t threads[2];
connect(fd,(struct sockaddr*)&addr,sizeof(addr))
printf ("\n,the message from server:%s\n",msg);
pthread_create(&threads[0], NULL, receive, (void *)1);
while(1) // 此段是用来 input 文字讯息给 server 的
{
bzero(sndbuf,sizeof(sndbuf));
printf ("input msg to server:");
fgets (sndbuf,sizeof(sndbuf),stdin);
write (fd,sndbuf,sizeof(sndbuf));
}
我想问一下,我的thread这样写,有问题吗
因为我发现,我的receive() 不太会跑 (照常理应该是一直在run)
--
.''`.
: :' :
`. `'`
`- Debian -
暴怒勿言,言必伤人 狂喜勿语,语必浮夸
--
┌╗┬─ Origin:《Ψ义守观山风情Ψ》<bbs.isu.edu.tw> ─┬╖╔╗
╚┘╙─ From : 124.8.143.66 ──────────╛└
╝╝