C语言线程问题
#include "apue.h"
#define PORT 1300
int sockfd;
int flag = 1;
void *thread_fun(void *arg)
{
char buf[20];
memset(buf, 0, sizeof(buf));
sprintf(buf, "this is thread %d !", flag);
while(1)
{
write(sockfd, buf, sizeof(buf));
if(flag == 1)
{
sleep(5);
flag = 2;
}
else
{
sleep(3);
flag = 1;
}
}
}
int main(void)
{
int i, j;
int ret;
struct sockaddr_in server;
pthread_t thread[2];
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
perror("socket");
exit(1);
}
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.s_addr = inet_addr("192.168.1.10");
ret = connect(sockfd, (struct sockaddr *)&server, sizeof(server));
if (ret < 0)
{
perror("connect");
exit(1);
}
for(i=0; i<2; i++)
{
ret = pthread_create(thread+i, NULL, thread_fun, NULL);
sleep(1);
if(ret != 0)
{
perror("pthread_create");
exit(1);
}
}
return 0;
}
这是一个客户端程序 客户端创建两个线程 线程1每隔5秒向服务器发送“this is thread 1”,线程2每隔3秒向服务器端发送“this is thread 2”
我运行这个客户端程序后 只想服务器端写了一次 “this is thread 1”然后就退出了 根本没有执行thread_fun 中的while语句 为什么??麻烦帮我改一下 谢谢了 着急用! C 多线程 线程 socket
[解决办法]
为什么不在创建线程时向线程函数thread_fun中传入参数,然后在thread_fun中判断处理
[解决办法]
flag 怎么能作为全局变量...