码迷,mamicode.com
首页 > 编程语言 > 详细

TCP并发服务器(五)——每个客户一个线程

时间:2014-07-25 02:18:14      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   for   re   c   

TCP并发服务器(五)——每个客户一个线程

1.说明

前面4个版本都是关于进程的,可以将进程改为线程来实现。

这个最简单的版本也快于前面的所有预先派生进程的版本。

 

2.代码

#include "unpthread.h"

void sig_int(int signo)
{
    DPRINTF("sig_int()\n");
    void pr_cpu_time(void);
    pr_cpu_time();
    exit(0);
}

void *doit(void *arg)
{
    void web_child(int);
    DPRINTF("创建一个线程\n");
    Pthread_detach(pthread_self());
    
    //int connfd = (int)arg;
    web_child((int)arg);
    Close((int)arg);

    return NULL;
}


int main(int argc, char *argv[])
{
    socklen_t addrlen;
    int listenfd;
    if (argc == 2) {
        listenfd = Tcp_listen(NULL, argv[1], &addrlen);
    } else if (argc == 3) {
        listenfd = Tcp_listen(argv[1], argv[2], &addrlen);
    } else {
        err_sys("Usage: a.out [ <host> ] <port#>");
    }
    struct sockaddr *cliaddr = (struct sockaddr*)Malloc(addrlen);

    Signal(SIGINT, sig_int);

    pthread_t tid;
    for (;;) {
        socklen_t clilen = addrlen;
        DPRINTF("Wait for a connection\n");
        int connfd = Accept(listenfd, cliaddr, &clilen);
        DPRINTF("Accept a connection\n");

        Pthread_create(&tid, NULL, &doit, (void*)connfd);
    }

    return 0;
}

TCP并发服务器(五)——每个客户一个线程,布布扣,bubuko.com

TCP并发服务器(五)——每个客户一个线程

标签:style   blog   color   os   io   for   re   c   

原文地址:http://www.cnblogs.com/hancm/p/3866604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!