• c++11 跨平台多线程demo和qt 静态链接(std::thread有join函数,设置 QMAKE_LFLAGS = -static)



    #include <stdio.h>
    #include <stdlib.h>

    #include <chrono> // std::chrono::seconds
    #include <iostream> // std::cout
    #include <thread> // std::thread, std::this_thread::sleep_for

    //http://www.cnblogs.com/haippy/p/3236136.html
    void thread_task(int n) {
    std::this_thread::sleep_for(std::chrono::seconds(n));
    std::cout << "hello thread "
    << std::this_thread::get_id()
    << " paused " << n << " seconds" << std::endl;
    }

    /*
    * === FUNCTION =========================================================
    * Name: main
    * Description: program entry routine.
    * ========================================================================
    */
    int main(int argc, const char *argv[])
    {
    std::thread threads[5];
    std::cout << "Spawning 5 threads... ";
    for (int i = 0; i < 5; i++) {
    threads[i] = std::thread(thread_task, i + 1);
    }
    std::cout << "Done spawning threads! Now wait for them to join ";
    for (auto& t: threads) {
    t.join();
    }
    std::cout << "All threads joined. ";

    return EXIT_SUCCESS;
    } /* ---------- end of function main ---------- */


    #include <iostream>
    #include <utility>
    #include <thread>
    #include <chrono>
    #include <functional>
    #include <atomic>

    //http://en.cppreference.com/w/cpp/thread/thread/thread
    void f1(int n)
    {
    for (int i = 0; i < 5; ++i) {
    std::cout << "Thread 1 executing ";
    ++n;
    std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
    }

    void f2(int& n)
    {
    for (int i = 0; i < 5; ++i) {
    std::cout << "Thread 2 executing ";
    ++n;
    std::this_thread::sleep_for(std::chrono::milliseconds(10));
    }
    }

    int main()
    {
    int n = 0;
    std::thread t1; // t1 is not a thread
    std::thread t2(f1, n + 1); // pass by value
    std::thread t3(f2, std::ref(n)); // pass by reference
    std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread
    t2.join();
    t4.join();
    std::cout << "Final value of n is " << n << ' ';
    }
    <pre name="code" class="cpp">TEMPLATE = app
    CONFIG += console
    CONFIG -= app_bundle
    CONFIG -= qt

    QMAKE_CXXFLAGS += -std=c++11

    QMAKE_LFLAGS  = -static

    SOURCES += main.cpp

    unix{
        #linux add pthread
        LIBS +=  -lpthread
    }

    include(deployment.pri)
    qtcAddDeployment()

    ---------------------
    作者:yunshouhu
    来源:CSDN
    原文:https://blog.csdn.net/earbao/article/details/52809046
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Spring Annotation注解进行aop的学习
    使用ADO读取SQL数据库
    GetInventTable组装SQL语句使用通配符
    获取当前用户所属的所有仓位,DictRelation,
    UnitConvert,单位换算,单位转换
    数字货币书写转英文货币书写
    导出xml
    存储过程IN参数疑难问题解决方法
    TempTable 临时表
    多栏报表 多列报表
  • 原文地址:https://www.cnblogs.com/findumars/p/10974633.html
Copyright © 2020-2023  润新知