轻量级协程,使用单线程用setjump与longjump来实现状态转移,快速,安全。
1.初始化
2.创建线程
线程函数通过st提供的io实现
上下文切换
虚拟处理器
idle thread
信号转换为io事件
EDSM
一个线程模拟多线程
//打开udp
if ((nfd = st_netfd_open_socket(s)) == NULL) {
h_errno = NETDB_INTERNAL;
n = errno;
close(s);
errno = n;
return -1;
}
h_errno = NETDB_INTERNAL;
n = errno;
close(s);
errno = n;
return -1;
}
//发送udp
st_sendto(nfd, buf, len, (struct sockaddr *)&(_res.nsaddr_list[i]),
sizeof(struct sockaddr), timeout) != len)
sizeof(struct sockaddr), timeout) != len)
//接收udp
do {
len = st_recvfrom(nfd, buf, blen, NULL, NULL, timeout);
if (len <= 0)
break;
} while (id != hp->id);
len = st_recvfrom(nfd, buf, blen, NULL, NULL, timeout);
if (len <= 0)
break;
} while (id != hp->id);