NtyCo icon indicating copy to clipboard operation
NtyCo copied to clipboard

nty_server.c:117 传入了一个栈变量

Open vbirds opened this issue 3 years ago • 1 comments

nty_coroutine_create(&read_co, server_reader, &cli_fd) cli_fd 为栈变量,复制给co->arg 栈对象的地址不会有问题么?

void server(void *arg) {

	unsigned short port = *(unsigned short *)arg;
	free(arg);

	int fd = nty_socket(AF_INET, SOCK_STREAM, 0);
	if (fd < 0) return ;

	struct sockaddr_in local, remote;
	local.sin_family = AF_INET;
	local.sin_port = htons(port);
	local.sin_addr.s_addr = INADDR_ANY;
	bind(fd, (struct sockaddr*)&local, sizeof(struct sockaddr_in));

	listen(fd, 20);
	printf("listen port : %d\n", port);

	struct timeval tv_begin;
	gettimeofday(&tv_begin, NULL);

	while (1) {
		socklen_t len = sizeof(struct sockaddr_in);
		int cli_fd = nty_accept(fd, (struct sockaddr*)&remote, &len);
		if (cli_fd % 1000 == 999) {

			struct timeval tv_cur;
			memcpy(&tv_cur, &tv_begin, sizeof(struct timeval));
			
			gettimeofday(&tv_begin, NULL);
			int time_used = TIME_SUB_MS(tv_begin, tv_cur);
			
			printf("client fd : %d, time_used: %d\n", cli_fd, time_used);
		}
		printf("new client comming\n");

		nty_coroutine *read_co;
		// arg 传入一个栈上变量?
		nty_coroutine_create(&read_co, server_reader, &cli_fd);
	}
}

vbirds avatar Aug 21 '21 08:08 vbirds

貌似while没退出吧?应该是可以的

wwhai avatar Jun 07 '22 02:06 wwhai