调用另一个程序,将任务分配给其中的线程并返回 我正在编写一个C++程序,它将被另一个程序调用。我的程序流程如下图所示:

调用另一个程序,将任务分配给其中的线程并返回 我正在编写一个C++程序,它将被另一个程序调用。我的程序流程如下图所示:,c++,multithreading,C++,Multithreading,程序说明:程序-1大约每30秒会定期调用程序-2。程序-2的唯一任务是写入数据,但我不想阻止程序-1在写入数据时等待。因此,我想将写入数据的任务分配给另一个线程,并立即从程序2中出来 问题:我应该如何在Program-2中实现一个线程,以便它不会阻塞Program-1 PS:每次都需要将数据写入同一个文件。如果保存数据所需的时间超过生成数据所需的时间,则您必须将其并行写入另一个文件,因为即使缓冲数据也会导致缓冲区不断增长 如果不是这种情况,那么在program-2中不需要单独的线程,请先读取所有

程序说明:程序-1大约每30秒会定期调用程序-2。程序-2的唯一任务是写入数据,但我不想阻止程序-1在写入数据时等待。因此,我想将写入数据的任务分配给另一个线程,并立即从程序2中出来

问题:我应该如何在Program-2中实现一个线程,以便它不会阻塞Program-1


PS:每次都需要将数据写入同一个文件。

如果保存数据所需的时间超过生成数据所需的时间,则您必须将其并行写入另一个文件,因为即使缓冲数据也会导致缓冲区不断增长


如果不是这种情况,那么在program-2中不需要单独的线程,请先读取所有数据,然后每次都将其写入文件。

第二个程序是典型的服务器。它应该有一个作业队列、一个与外部世界通信的线程和一个或多个工作线程。comm线程将作业写入队列,工作线程检索并执行作业。队列应同步。在您的情况下,最好保留一个工作线程。如何控制线程的创建…?,如何确保前一个线程仍然没有写入XML文件…-这都是关于过程交互的,其中一个过程代表程序-1,另一个过程代表程序-2。当前,当Program-1运行Program-2并向其传递参数时,您只有一个进程交互。因此,您需要为其他交互详细说明方法。如n.m.所述,您可以在进程之间设置网络连接。但也可以使用其他变体:POSIX消息队列、共享内存等。在这种情况下,如何控制线程的创建?您不控制创建,而是同步线程。一种常见的方法是使用多生产者、单消费者队列。所有线程都将消息写入队列,只有一个线程使用它们并按顺序将它们写入文件。另一种更简单但可扩展性较差的方法是在数据保存期间简单地锁定文件。请重新打开它或让我知道,如果我需要添加一些更多的信息。