我们可以像Switch player那样在fork()C调用的进程之间切换吗

我们可以像Switch player那样在fork()C调用的进程之间切换吗,c,switch-statement,fork,exec,C,Switch Statement,Fork,Exec,例如,我在小时候使用fork调用4 player.c,想创建棋盘游戏,在每个玩家完成回合后,程序将暂停该玩家.c并切换到另一个玩家,它将重复这样的操作,直到有人赢得游戏这似乎是某种形式的互斥可以实现的。这个问题相当模糊,因此我的回答也将更一般,而不是提供代码 然而,首先你必须考虑一下这里是否真的需要多重处理。使用多个进程的主要原因是,您的程序可以同时执行多个任务。 事实上,您似乎只是希望序列化一系列任务。然而,由于您似乎是相当新的(抱歉,如果这个假设是错误的),我假设您仍然想了解多处理,即使它不

例如,我在小时候使用fork调用4 player.c,想创建棋盘游戏,在每个玩家完成回合后,程序将暂停该玩家.c并切换到另一个玩家,它将重复这样的操作,直到有人赢得游戏

这似乎是某种形式的互斥可以实现的。这个问题相当模糊,因此我的回答也将更一般,而不是提供代码

然而,首先你必须考虑一下这里是否真的需要多重处理。使用多个进程的主要原因是,您的程序可以同时执行多个任务。

事实上,您似乎只是希望序列化一系列任务。然而,由于您似乎是相当新的(抱歉,如果这个假设是错误的),我假设您仍然想了解多处理,即使它不是这里的最佳解决方案

好的,从最普遍的意义上看,有两种基本的方法来看待多个进程,共享资源/对象和消息传递

共享资源的作用是让多个进程同时访问同一内存、文件或其他内容。如果您希望使用这种方法,假设您使用的是POSIX操作系统,并且存在fork,那么您将希望查看POSIX中的mmap或共享内存调用集以及POSIX互斥或信号量对象

然而,如果您希望使用消息传递,您可以研究POSIX消息队列,或者更简单地研究UNIX套接字或管道,甚至只是对文件进行写入和读取


我无法建议您使用哪种技术,因为性能差异是复杂的、相当微妙的,超出了本答案的范围。不过,我会研究这两种技术,看看什么在概念上对您来说是最好的。

这似乎是某种形式的互斥可能实现的。这个问题相当模糊,因此我的回答也将更一般,而不是提供代码

然而,首先你必须考虑一下这里是否真的需要多重处理。使用多个进程的主要原因是,您的程序可以同时执行多个任务。

事实上,您似乎只是希望序列化一系列任务。然而,由于您似乎是相当新的(抱歉,如果这个假设是错误的),我假设您仍然想了解多处理,即使它不是这里的最佳解决方案

好的,从最普遍的意义上看,有两种基本的方法来看待多个进程,共享资源/对象和消息传递

共享资源的作用是让多个进程同时访问同一内存、文件或其他内容。如果您希望使用这种方法,假设您使用的是POSIX操作系统,并且存在fork,那么您将希望查看POSIX中的mmap或共享内存调用集以及POSIX互斥或信号量对象

然而,如果您希望使用消息传递,您可以研究POSIX消息队列,或者更简单地研究UNIX套接字或管道,甚至只是对文件进行写入和读取

我无法建议您使用哪种技术,因为性能差异是复杂的、相当微妙的,超出了本答案的范围。然而,我会研究这两种技术,看看在概念上你觉得什么是最好的