C++ 最小化进程之间的上下文切换时间

C++ 最小化进程之间的上下文切换时间,c++,c,linux,semaphore,context-switching,C++,C,Linux,Semaphore,Context Switching,我有4个进程共享一个公共信号量,所有进程都具有相同的优先级。 锁内的关键区域具有读/写操作,包括 fflush()调用 在日志中,我观察到在发出特定进程的信号量之后, 其他进程获取锁需要相当长的时间 由于所有4个进程都在同一点锁定,因此嵌入式设备上存在性能问题。如果锁在线程之间共享,则可以使用pthread_cond____t来最小化切换时间。现在,可以做些什么来最小化进程之间的切换时间呢?在内核中保存的进程之间进行上下文切换。内核调度器的任务是进行上下文切换,所以除了尝试加快调度器上下文切换路

我有4个进程共享一个公共信号量,所有进程都具有相同的优先级。 锁内的关键区域具有读/写操作,包括 fflush()调用

在日志中,我观察到在发出特定进程的信号量之后, 其他进程获取锁需要相当长的时间


由于所有4个进程都在同一点锁定,因此嵌入式设备上存在性能问题。如果锁在线程之间共享,则可以使用pthread_cond____t来最小化切换时间。现在,可以做些什么来最小化进程之间的切换时间呢?

在内核中保存的进程之间进行上下文切换。内核调度器的任务是进行上下文切换,所以除了尝试加快调度器上下文切换路径之外,您在这里做不了什么。另一种选择可能是尝试解决问题,并通过减少锁争用(可能)来改进应用程序。

在内核内的进程之间切换上下文。内核调度器的任务是进行上下文切换,所以除了尝试加快调度器上下文切换路径之外,您在这里做不了什么。另一种选择可能是尝试解决问题,并通过减少锁争用(可能)来改进应用程序。

我知道内核会安排进程。但是,我想知道是否有像pthread的条件变量这样的变量可以让内核知道切换到等待进程,而不是让内核在循环链接列表上找到等待进程。如果不做任何广泛的研究,以这种方式很难判断,调度器需要处理具有各种特性的各种进程,调度器试图在它们之间做到公平,谁知道它不会对内核的任何其他部分造成任何影响。我知道内核会对进程进行调度。但是,我想知道是否有像pthread的条件变量这样的变量可以让内核知道切换到等待进程,而不是让内核在循环链接列表上找到等待进程。如果不做任何广泛的研究,以这种方式很难判断,调度器需要处理具有各种特性的各种进程,调度器试图在它们之间做到公平,谁知道它不会对内核的任何其他部分造成任何影响。