Skim panggilan selari bagi fungsi C++ dalam sistem teragih?

WBOY
Lepaskan: 2024-04-26 16:36:01
asal
561 orang telah melayarinya

Terdapat tiga pilihan untuk memanggil fungsi C++ secara selari dalam sistem teragih: menggunakan benang, menggunakan kumpulan benang C++11 dan menggunakan perpustakaan pihak ketiga. Kumpulan benang menyediakan fungsi dan prestasi yang lebih maju, yang boleh digunakan untuk memproses imej, pengiraan saintifik dan kes praktikal lain, meningkatkan prestasi algoritma dengan ketara.

C++ 函数在分布式系统中的并行调用方案?

Skim panggilan selari fungsi C++ dalam sistem teragih

Dalam sistem teragih, selalunya perlu memanggil fungsi pada berbilang nod secara selari. Terdapat beberapa cara untuk melaksanakan fungsi ini dalam C++.

Menggunakan Benang

Cara paling mudah ialah menggunakan benang. Kod berikut mencipta empat utas, setiap satu memanggil fungsi selari:

#include <iostream>
#include <thread>

using namespace std;

void function(int i) {
  cout << "Thread " << i << " is running." << endl;
}

int main() {
  thread thread1(function, 1);
  thread thread2(function, 2);
  thread thread3(function, 3);
  thread thread4(function, 4);
  thread1.join();
  thread2.join();
  thread3.join();
  thread4.join();
  return 0;
}
Salin selepas log masuk

Menggunakan kumpulan benang dalam standard C++11

Piawaian C++11 memperkenalkan perpustakaan std::thread, yang menyediakan kumpulan benang yang lebih maju . Kolam benang ialah sekumpulan benang pra-dicipta yang boleh digunakan untuk melaksanakan tugas. Kod berikut menggunakan kumpulan benang untuk memanggil empat fungsi secara selari:

#include <iostream>
#include <thread>

using namespace std;

void function(int i) {
  cout << "Thread " << i << " is running." << endl;
}

int main() {
  threadpool pool(4);
  for (int i = 1; i <= 4; i++) {
    pool.enqueue(function, i);
  }
  pool.join_all();
  return 0;
}
Salin selepas log masuk

Menggunakan perpustakaan pihak ketiga

Terdapat juga beberapa perpustakaan pihak ketiga yang boleh digunakan untuk memanggil fungsi secara selari, seperti Intel TBB dan Boost. Asio. Perpustakaan ini biasanya menyediakan fungsi dan prestasi yang lebih maju daripada perpustakaan standard C++.

Kes praktikal

Berikut ialah kes praktikal menggunakan C++ untuk memanggil fungsi secara selari:

Pemprosesan imej

Pemprosesan imej selari boleh meningkatkan prestasi algoritma pemprosesan imej dengan ketara. Kod berikut menggunakan kumpulan benang untuk memproses empat kawasan berbeza pada imej secara selari:

#include <iostream>
#include <thread>
#include <vector>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

void process_region(Mat& image, int start_x, int start_y, int end_x, int end_y) {
  // 处理图像区域
}

int main() {
  Mat image = imread("image.jpg");
  threadpool pool(4);
  int width = image.cols;
  int height = image.rows;
  int region_width = width / 4;
  int region_height = height / 4;
  for (int i = 0; i < 4; i++) {
    int start_x = i * region_width;
    int start_y = 0;
    int end_x = (i + 1) * region_width;
    int end_y = height;
    pool.enqueue(process_region, image, start_x, start_y, end_x, end_y);
  }
  pool.join_all();
  return 0;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Skim panggilan selari bagi fungsi C++ dalam sistem teragih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan