C++程序 显示线程接口和内存一致性错误

C++程序 显示线程接口和内存一致性错误

C++通过使用“线程”头文件允许多线程。该程序作为一个线程,但为了增加程序执行时间/性能,我们可以使用线程来并发运行程序的某些部分。但它可能会导致内存一致性错误问题,可能无法给我们正确的输出。线程用于通过并行运行进程来改善应用程序的性能。

线程可以共享相同的资源或引用指针。两个或更多线程可能引用同一对象或共享某些常见资源,并尝试独立更新或更改共享资源数据,这可能会导致数据不一致。

示例: 在下面的C++程序中,使用两个线程使用相同的函数。首先应该为线程1运行,然后为线程2运行。但是为了显示共享相同资源/函数的内存一致性,输出不一致。

// C ++程序显示
//内存一致性
#include 
#include 
using namespace std;

class thread_obj {
public:

 void operator()(int x)
 {
   for (int i = 0; i < 50; i++)
   {
     cout << "Thread " << x << "\n";
   }
 }
};

//Driver code
int main()
{
   // thread 1
   thread th1(thread_obj(), 1);

   // thread 2
   thread th2(thread_obj(), 2);

   // wait for thread1 to join
   th1.join();

   // wait for thread2 to join
   th2.join();

   return 0;
}  

C++程序 显示线程接口和内存一致性错误

输出-您可以看到输出的不一致性(它是机器相关的)

示例2: 在下面的C++程序中,将尝试从不同线程中访问相同的值,因为可以看到内存一致性错误,因为两个线程将同时运行。

// C ++程序显示内存
//一致性错误
#include 
#include 
using namespace std;

int x = 100;

void thread_function() 
{
    for(int i = 0; i < 50; i++) 
    { 
      x--;
      cout << "Thread 1 " << 
               x << "\n";
    }
}

//Driver code
int main() 
{
  std::thread t(&thread;_function);

  for(int i = 0;i < 100; i++) 
  {
      x++;
      cout << "main thread " << 
              x << "\n";
  }
    return 0;
}  

C++程序 显示线程接口和内存一致性错误

输出-您可以看到输出的不一致性(它是机器相关的)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例