亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dthread3.c

?? 多線程程序作為一種多任務、并發的工作方式
?? C
字號:
#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <getopt.h>#include <netdb.h>#include <pthread.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#define DICE_PORT 6173int do_debug = 0;int do_thread = 0;int do_stdin = 0;int do_sleep = 0;pthread_mutex_t count_mutex = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t rand_mutex = PTHREAD_MUTEX_INITIALIZER;int threadcount = 0;struct sockets {	int local;	FILE *in, *out;};struct sockets *get_sockets(int);int socket_setup(void);int debug(char *, ...);int fail(char *, ...);int warn(char *, ...);int roll_die(int);void *roll_dice(void *);void spawn(struct sockets *);intdebug(char *fmt, ...) {	va_list ap;	int r;	va_start(ap, fmt);	if (do_debug) {		r = vfprintf(stderr, fmt, ap);	} else {		r = 0;	}	va_end(ap);	return r;}intwarn(char *fmt, ...) {	int r;	va_list ap;	va_start(ap, fmt);	r = vfprintf(stderr, fmt, ap);	va_end(ap);	return r;}intfail(char *fmt, ...) {	int r;	va_list ap;	va_start(ap, fmt);	r = vfprintf(stderr, fmt, ap);	exit(1);	/* notreached */	va_end(ap);	return r;}introll_die(int n) {	int r;	pthread_mutex_lock(&rand_mutex);	r = rand() % n + 1;	pthread_mutex_unlock(&rand_mutex);	return r;}/* read dice on standard input, write results on standard output */void *roll_dice(void *v) {	struct sockets *s = v;	char inbuf[512];	/* think globally, program defensively */	if (!s || !s->out || !s->in)		return NULL;	fprintf(s->out, "enter die rolls, or q to quit\n");	while (fgets(inbuf, sizeof(inbuf), s->in) != 0) {		int dice;		int size;		if (inbuf[0] == 'q') {			fprintf(s->out, "buh-bye!\n");			if (s->local == 0) {				shutdown(fileno(s->out), SHUT_RDWR);			}			fclose(s->out);			fclose(s->in);			if (s->local == 0) {				free(s);			}			pthread_mutex_lock(&count_mutex);			--threadcount;			/* last one out closes the lights */			if (threadcount == 0)				exit(0);			pthread_mutex_unlock(&count_mutex);			return 0;		}		if (sscanf(inbuf, "%dd%d", &dice, &size) != 2) {			fprintf(s->out, "Sorry, but I couldn't understand that.\n");		} else {			int i;			int total = 0;			for (i = 0; i < dice; ++i) {				int x = roll_die(size);				total += x;				fprintf(s->out, "%d ", x);				fflush(s->out);				if (do_sleep)					sleep(1);			}			fprintf(s->out, "= %d\n", total);		}	}	return 0;}intmain(int argc, char *argv[]) {	int o;	int sock;	while ((o = getopt(argc, argv, "dstS")) != -1) {		switch (o) {		case 'S':			do_sleep = 1;			break;		case 'd':			do_debug = 1;			break;		case 's':			do_stdin = 1;			break;		case 't':			do_thread = 1;			break;		}	}	if (do_thread) {		/* set up mutexes */		pthread_mutex_init(&count_mutex, NULL);		pthread_mutex_init(&rand_mutex, NULL);	}	if (do_stdin) {		struct sockets s;		s.local = 1;		s.in = stdin;		s.out = stdout;		if (do_thread) {			spawn(&s);		} else {			roll_dice(&s);			exit(0);		}	}	sock = socket_setup();	while (1) {		struct sockets *s = get_sockets(sock);		if (s) {			if (do_thread) {				spawn(s);			} else {				roll_dice(s);				exit(0);			}		}	}	return 0;}intsocket_setup(void) {	struct protoent *tcp_proto;	struct sockaddr_in local;	int r, s, one;	tcp_proto = getprotobyname("tcp");	if (!tcp_proto) {		fail("Can't find TCP/IP protocol: %s\n", strerror(errno));	}	s = socket(PF_INET, SOCK_STREAM, tcp_proto->p_proto);	if (s == -1) {		fail("socket: %s\n", strerror(errno));	}	one = 1;	setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));	memset(&local, 0, sizeof(struct sockaddr_in));	local.sin_family = AF_INET;	local.sin_port = htons(DICE_PORT);	r = bind(s, (struct sockaddr *) &local, sizeof(struct sockaddr_in));	if (r == -1) {		fail("bind: %s\n", strerror(errno));	}	r = listen(s, 5);	if (r == -1) {		fail("listen: %s\n", strerror(errno));	}	return s;}struct sockets *get_sockets(int sock) {	int conn;	if ((conn = accept(sock, NULL, NULL)) < 0) {		warn("accept: %s\n", strerror(errno));		return 0;	} else {		struct sockets *s;		s = malloc(sizeof(struct sockets));		if (s == NULL) {			warn("malloc failed.\n");			return 0;		}		s->local = 0;		s->in = fdopen(conn, "r");		s->out = fdopen(conn, "w");		setlinebuf(s->in);		setlinebuf(s->out);		return s;	}}voidspawn(struct sockets *s) {	pthread_t p;	pthread_mutex_lock(&count_mutex);	pthread_create(&p, NULL, roll_dice, (void *) s);	++threadcount;	pthread_mutex_unlock(&count_mutex);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看www91| 精品国产91亚洲一区二区三区婷婷 | 制服丝袜av成人在线看| 精品日韩在线一区| 免费在线观看成人| 国产精品视频免费| 视频一区欧美日韩| 成人精品免费看| 欧美一区二区三区免费在线看| 中文字幕一区二区三区在线播放| 日本不卡一二三区黄网| 91网上在线视频| 国产欧美日韩不卡| 美女脱光内衣内裤视频久久影院| 91免费看片在线观看| 久久亚洲精华国产精华液 | 亚洲第一福利一区| 成人三级伦理片| 精品国产髙清在线看国产毛片| 亚洲国产日韩综合久久精品| a4yy欧美一区二区三区| 中文av一区二区| 国产精品一区二区在线播放 | 91美女在线视频| 欧美精品一区二区三区高清aⅴ| 午夜精品久久久久久久久| 国产中文一区二区三区| 欧美手机在线视频| 亚洲理论在线观看| 欧美一区二区精品久久911| 亚洲综合在线观看视频| 91蜜桃免费观看视频| 亚洲视频在线一区| 色94色欧美sute亚洲13| 樱桃视频在线观看一区| 色婷婷久久综合| 亚洲影视在线观看| 欧美日韩一区二区三区四区| 亚洲.国产.中文慕字在线| 日本韩国一区二区| 亚洲www啪成人一区二区麻豆 | 亚洲激情校园春色| 在线看国产一区| 亚洲成在人线免费| 欧美一区二区视频在线观看| 日本成人中文字幕| 久久精品视频在线免费观看| eeuss影院一区二区三区 | 久久se精品一区精品二区| 日韩午夜小视频| 国内不卡的二区三区中文字幕| 久久久影院官网| www.日韩精品| 亚洲一区二区av电影| 91精品国产一区二区人妖| 精品亚洲国产成人av制服丝袜| 国产偷国产偷亚洲高清人白洁| 成人国产精品免费观看动漫| 国产一区二区精品在线观看| 国产拍欧美日韩视频二区| 成人黄色大片在线观看| 午夜视频在线观看一区二区三区| 欧美一区二区在线免费播放| 粉嫩久久99精品久久久久久夜 | 五月天丁香久久| 久久综合久久久久88| 91在线视频免费观看| 青青青伊人色综合久久| 国产视频一区不卡| 欧美系列在线观看| 国产成人免费xxxxxxxx| 午夜在线电影亚洲一区| 国产情人综合久久777777| 欧美精品视频www在线观看| 国产精品一区二区在线观看不卡| 一区二区三区精品在线| www一区二区| 欧美群妇大交群中文字幕| 国产高清成人在线| 日本色综合中文字幕| 精品入口麻豆88视频| 日韩欧美一区二区视频| 亚洲va韩国va欧美va| 色综合网站在线| 狠狠色狠狠色合久久伊人| 亚洲人精品午夜| 久久久99精品免费观看| 欧美日韩成人综合在线一区二区| 床上的激情91.| 久久国产综合精品| 婷婷久久综合九色综合绿巨人| 香蕉久久一区二区不卡无毒影院| 自拍视频在线观看一区二区| 久久欧美一区二区| 91精品久久久久久蜜臀| 日本精品视频一区二区| av在线一区二区三区| 激情综合色播五月| 麻豆久久久久久久| 亚洲www啪成人一区二区麻豆| 一区二区在线观看不卡| 国产精品九色蝌蚪自拍| 国产精品国产三级国产普通话三级| 成人动漫在线一区| 国产一区二区女| 狠狠狠色丁香婷婷综合激情| 午夜精品久久久久久不卡8050| 亚洲精品中文字幕乱码三区| 欧美经典一区二区三区| 久久久久久久综合日本| www日韩大片| 久久久久久99精品| 久久蜜桃一区二区| 国产欧美日韩卡一| 国产色产综合产在线视频| 国产亚洲短视频| 欧美激情自拍偷拍| 国产精品国产自产拍高清av王其| 国产婷婷色一区二区三区四区 | 国产精品一级黄| 狠狠色综合色综合网络| 韩国精品久久久| 国产精品一线二线三线| 国产老妇另类xxxxx| 国产二区国产一区在线观看| 成人午夜免费av| 色综合欧美在线视频区| 在线亚洲人成电影网站色www| 欧美在线观看一区二区| 欧美午夜精品免费| 欧美一级高清片在线观看| 精品国产一区二区三区久久影院 | 国产精品久久久久久久久久免费看| 中文字幕第一区二区| 亚洲色图欧洲色图婷婷| 亚洲一区在线观看网站| 日本欧美在线看| 国产成人在线看| 色先锋久久av资源部| 69堂精品视频| 国产日产欧美一区二区视频| 一区二区在线看| 久久99精品久久久久久动态图 | 国产欧美一区视频| 国产亚洲欧美色| 亚洲欧美另类久久久精品2019| 亚洲制服丝袜一区| 六月婷婷色综合| 99久久99久久精品国产片果冻| 欧美女孩性生活视频| 久久精品亚洲国产奇米99| 一区二区三区四区在线免费观看| 蜜桃av一区二区在线观看| 国产成人激情av| 欧美老肥妇做.爰bbww视频| 久久久久久久综合| 亚洲国产精品久久久久秋霞影院 | 精品国产一区二区三区av性色| 国产精品成人免费精品自在线观看| 午夜a成v人精品| 成人黄页毛片网站| 欧美变态凌虐bdsm| 亚洲一区二区三区国产| 国产美女一区二区| 欧美浪妇xxxx高跟鞋交| 一本大道久久a久久综合婷婷| 99综合影院在线| 欧美电影免费观看高清完整版 | 欧美高清激情brazzers| 欧美国产亚洲另类动漫| 天堂va蜜桃一区二区三区| 不卡视频在线观看| 久久一区二区视频| 日韩综合一区二区| 91啪亚洲精品| 日本一区二区三区电影| 久久丁香综合五月国产三级网站| 色偷偷88欧美精品久久久| 国产精品久久久爽爽爽麻豆色哟哟| 六月婷婷色综合| 91精品欧美福利在线观看| 亚洲精品成人天堂一二三| 不卡免费追剧大全电视剧网站| 精品欧美一区二区在线观看| 日韩综合小视频| 欧美日韩久久不卡| 玉米视频成人免费看| 91欧美激情一区二区三区成人| 国产亚洲综合色| 国产九色sp调教91| 久久综合色婷婷| 久久不见久久见中文字幕免费| 正在播放亚洲一区| 亚洲成人777| 制服丝袜亚洲网站| 日韩精品久久理论片| 欧美一区二区三区婷婷月色| 三级久久三级久久| 日韩三级视频中文字幕| 蜜臀av性久久久久蜜臀av麻豆|