gpt4 book ai didi

c - 如何连续在子进程和父进程之间进行上下文切换?

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:39 24 4
gpt4 key购买 nike

我正在尝试根据共享内存的概念用 C 语言编写一个程序。我正在创建两个共享内存并使用 fork() 函数创建两个进程。我希望其中一个进程写入一个共享内存,另一个进程从其中读取,反之亦然。我不想使用管道。我如何才能连续在两个进程之间进行上下文切换,以便我可以从一个进程读取并从另一个进程写入?

最佳答案

I am trying to write a program in C based on the concept of shared memory. I am creating two shared memory and creating two processes using the fork() function. I want one of the process to write into one of the shared memory and the other to read from it and vice versa with the other shared memory. I don't want to use pipes. How can i context switch between the two processes continuosly so that I can read from one and write from the other?

上下文切换不是 C 语言的概念。操作系统在用户空间程序的控制之外管理它。但这甚至可能与您的问题无关,因为如今多核和多处理器计算机已成为常态,它们可以提供真正的并发性,无需上下文切换。

两个进程完全可以通过共享内存进行通信。毕竟,这就是它的目的。但是如果没有同步他们行动的机制,他们就不可能这样做。例如,进程 B 如何知道进程 A 何时完成共享内存的更新,以便 B 可以读取 A 写的内容?而A又如何知道B已经读取完毕,再次更新共享内存就不会丢失数据?

这些类型的同步问题是通过专用同步对象(例如信号量、互斥量和条件变量)以及对它们进行操作的函数来处理的。如何正确使用这些是一个过于广泛的主题,无法在一个 SO 答案中涵盖,但您会在各种 SO 问题中找到许多有关详细信息的示例。

或者您可以只使用管道,这对于本质上是串行的通信来说要容易得多。

关于c - 如何连续在子进程和父进程之间进行上下文切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52206883/

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