多執行緒的實現

2021-08-08 09:22:38 字數 1582 閱讀 7666

#include #include #include #include #include #include #include #include #include #include #include void * client(void *arg)	//connfd;

else if (ret == 0)

printf("buf : %s\n", buf);

ret = write(connfd, buf, sizeof(buf));

if (ret == -1)

} pthread_exit(null);

}void fun(int sig)

int main(int argc, char *argv)

printf("create listenfd = %d success\n", listenfd);

/* 2. 設定伺服器的ip位址和埠號(將socket和伺服器的ip位址和埠號進行繫結);bind */

memset(&srvaddr, 0, sizeof(struct sockaddr_in));

srvaddr.sin_family = af_inet;

srvaddr.sin_port = htons(9999);

srvaddr.sin_addr.s_addr = inet_addr("192.168.2.100");

ret = bind(listenfd, (const struct sockaddr *)&srvaddr, sizeof(srvaddr));

printf("port : %d\n", ntohs(srvaddr.sin_port));

if (ret == -1)

printf("bind success !\n");

/* 3. 啟動監聽(啟動伺服器); listen */

ret = listen(listenfd, 1024);

if (ret == -1)

printf("listen success !\n");

while(1)

printf("connect connfd = %d\n", connfd);

printf("ip : %s\n", inet_ntoa(cltaddr.sin_addr));

printf("port: %d\n", ntohs(cltaddr.sin_port));

/* 建立乙個子執行緒,處理客戶端的請求*/

ret = pthread_create(&client_pthread, null, client, (void *)&connfd);

if (ret != 0)

printf("create client_pthread = %d success\n", (int)client_pthread);

ret = pthread_detach(client_pthread);

if (ret != 0)

printf("detach cltaddr pthread success\n");

} close(listenfd);

return 0;

}

多執行緒的實現

通常情況下,應用程式都是在乙個執行緒中執行操作。但是,當呼叫乙個耗時操作 例如,大批量i o或大量矩陣變換等cpu密集操作 時,使用者介面常常會凍結。而使用多執行緒可以解決這一問題。qt有兩種多執行緒的方法,一種是繼承qthread的run函式 另外一種是把乙個繼承於qobject的類轉移到乙個th...

多執行緒 實現多執行緒的幾種方式

public class mythread extends thread mythread mythread1 newmythread mythread mythread2 newmythread mythread1.start mythread2.start public class mythre...

(40)多執行緒 實現多執行緒方法

建立執行緒用法 1.繼承thread,重寫run 方法,建立子類物件 a a new a 執行緒開始執行 a.start 2.實現runnable介面,實現run 方法,建立實現類物件 a a new a 建立 類物件 thread t new thread a 執行緒開始執行 t.start 上面...