Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将IO与OpenMP部分同步_Io_Synchronization_Openmp - Fatal编程技术网

如何将IO与OpenMP部分同步

如何将IO与OpenMP部分同步,io,synchronization,openmp,Io,Synchronization,Openmp,当我执行下面的代码时,shell输出可能在线程0和线程1之间重叠。 所以我想问您,确保每个线程在另一个线程开始输出之前完成输出写入的最佳方法是什么 这将确保输出是干净的 非常感谢 #pragma omp parallel num_threads(2) shared(emperor) { #pragma omp sections { #pragma omp section { cout << "Op

当我执行下面的代码时,shell输出可能在线程0和线程1之间重叠。 所以我想问您,确保每个线程在另一个线程开始输出之前完成输出写入的最佳方法是什么

这将确保输出是干净的

非常感谢

    #pragma omp parallel num_threads(2) shared(emperor)
    {
#pragma omp sections
        {
#pragma omp section
            {
                cout << "Open the listening thread by using openmp!"  << endl;
                emperor->startServerListening(); /// does some work
            }
#pragma omp section
            {
                cout << "Open the master thread by using openmp!" << endl;
                emperor->startServerCoupling(); /// does some other work
            }
        } /// End of sections
    } /// End of parallel section
#pragma omp并行num_线程(2)共享(皇帝)
{
#pragma omp部分
{
#pragma-omp段
{

cout最直接的方法是使用临界段,以便一次只有一个线程写入输出:

#pragma omp parallel num_threads(2) shared(emperor)
{
    #pragma omp sections
    {
        #pragma omp section
        {
            #pragma omp critical (cout)
                cout << "Open the listening thread by using openmp!"  << endl;
            emperor->startServerListening(); /// does some work
        }
        #pragma omp section
        {
            #pragma omp critical (cout)
                cout << "Open the master thread by using openmp!" << endl;
            emperor->startServerCoupling(); /// does some other work
        }
    } /// End of sections
} /// End of parallel section
#pragma omp并行num_线程(2)共享(皇帝)
{
#pragma omp部分
{
#pragma-omp段
{
#pragma omp临界值(cout)
库特