gpt4 book ai didi

c++ - 如何在C++代码中运行多个线程

转载 作者:行者123 更新时间:2023-12-02 10:39:27 25 4
gpt4 key购买 nike

我是C++的初学者。我编写了一个程序来从一个数据库中提取数据并将这些数据存储到另一个数据库中。我只想添加多个线程以加快该过程。我希望以两种方式做到这一点。

  • 从第一个DB中提取数据并将这些数据存储在内存中。 (在这种情况下,我需要将这些数据分为两种 std::vector 类型)
  • 从数据库中提取数据时,如果的 vector 大小大于10000 ,则两个线程需要调用并启动,分别从两个 vector 中获取数据并将这些数据存储在第二个数据库中。

  • 考虑下面的例子。这是演示上述情况的简单代码。有一个包含大量迭代的for循环。我需要启动 两个线程,以使此代码从dataOne和dataTwo vector 中提取数据(两个线程都使用单独的线程),并在 i = 10000 时将这些数据存储在dataThree和dataFour vector 中。

    使用命名空间std;
    int main(){

    std::vector<std::vector<int>> dataOne;
    std::vector<std::vector<int>> dataTwo;

    std::vector<std::vector<int>> dataThree;
    std::vector<std::vector<int>> dataFour;

    for(int i=0; i < 10000000; i++){
    std::vector<int> temp = {1,2,3};
    dataOne.push_back(temp); //store data in vector-one

    std::vector<int> temp2 = {3,4,5};
    dataTwo.push_back(temp2); //store data in vector-two
    }
    }

    当i = 10000时,应该有三个线程在运行,
  • 线程一-从dataOne数据获取数据并存储在数据中3
  • 线程二-从dataTwo vector 中获取数据并存储在dataFour
  • 线程main-在主函数
  • 中处理for循环

    任何人都可以帮助我解决这个问题?

    最佳答案

    只需使用std::tread:cplusplus std::thread

    我只举一个例子:

    // thread example
    #include <iostream> // std::cout
    #include <thread> // std::thread

    void foo()
    {
    // do stuff...
    }

    void bar(int x)
    {
    // do stuff...
    }

    int main()
    {
    std::thread first (foo); // spawn new thread that calls foo()
    std::thread second (bar,0); // spawn new thread that calls bar(0)

    std::cout << "main, foo and bar now execute concurrently...\n";

    // synchronize threads:
    first.join(); // pauses until first finishes
    second.join(); // pauses until second finishes

    std::cout << "foo and bar completed.\n";

    return 0;
    }

    关于c++ - 如何在C++代码中运行多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com