gpt4 book ai didi

C语言 : Parallel threads?

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:12 30 4
gpt4 key购买 nike

基本上我有两个我想并行运行的套接字,所以我不必等待一个套接字发送数据以从另一个套接字接收数据等等。我可以通过 fork 轻松地做到这一点,但是,为了更整洁,我想知道是否有办法从同一个过程中做到这一点。

类似于:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void test(){
sleep(5000);
}
int main(int argc, char *argv[])
{
printf("%d\n",time(NULL));
test();
printf("%d\n",time(NULL));
system("PAUSE");
return 0;
}

但是两行输出将是相同的,因为 sleep 功能正在“其他地方”处理。

我找到了一份关于创建线程的 MSDN 文档,但它谈到了 C 库函数对其不安全,这让我很担心,我喜欢我的 stdlib!

所以,是的,如果你有任何例子,你可以只使用 sleep() 作为占位符,我非常擅长套接字 :) 我在 Windows 上,但 Unix 版本也不错,或者更好的是,可以同时使用两者。

编辑:感谢您的所有回复。我想我明白你的意思了:我有两个套接字,然后我调用 select(),它返回所有准备好接收/发送数据的套接字,我发送/接收我的数据,然后循环返回。但是,由于尚未创建套接字,我如何使用 accept() 实现它?

最佳答案

最简单的方法是使套接字成为非阻塞的,并使用 select() 和/或 WaitForMultipleObjects() 检查何时可以读/写更多来自/到每个套接字的数据。这样一来,应用程序可以保持单线程状态,同时看起来仍同时为多个套接字提供服务。

关于C语言 : Parallel threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901119/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com