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;
}