美文网首页c/c++
C++ ---- 子线程切换主线程

C++ ---- 子线程切换主线程

作者: wolfaherd | 来源:发表于2021-01-19 22:32 被阅读0次

思考

Android开发中有子线程切换到主线程的方法,那么C++中是否也有同样的方法呢?

经过苦思冥想(1分钟还是30分钟来着,嘿嘿🤭),我发现子线程切换到主线程不就是:1.子线程通知主线程需要执行某个函数。2.同时子线程需要等待主线程把这个函数执行完了才能继续执行。

于是我写了下面这段代码来解释子线程切换主线程的原理,个人见解,仅供参考,欢迎沟通

#include <iostream>
#include <thread>
#include <functional>

using namespace::std;

function<void()> mainCmdFunc = nullptr;

static void CmdToMainThread(function<void()> cmdFunc)
{
    mainCmdFunc = cmdFunc;
    while (mainCmdFunc != nullptr) {
        
    }
}

template <typename F>
static void ExcuteLambdaFunc(F cmdFunc)
{
    cmdFunc();
}

static void childThread()
{
    cout << "老子是子线程" << endl;
    while (true) {
        CmdToMainThread([&]() {
            cout << "老子是从子线程来的,牛皮不?" << endl;
            });
        cout << "老子从主线程回来了" << endl;
        break;
    }
}

int main()
{
    thread *child_thread = new thread(childThread);

    while (true) {
        if (mainCmdFunc != nullptr) {
            cout << "有子线程小弟有想在我家放点东西的想法,没得问题" << endl;
            ExcuteLambdaFunc(mainCmdFunc);
            mainCmdFunc = nullptr;
            cout << "子线程小弟放完赶紧滚" << endl;
        }
    }
}

相关文章

  • C++ ---- 子线程切换主线程

    思考 Android开发中有子线程切换到主线程的方法,那么C++中是否也有同样的方法呢? 经过苦思冥想(1分钟还是...

  • RxJava系列(三)--切换线程

    1.主线程是怎么切换到子线程2.为什么只有第一次切换有效3.子线程是怎么切换到主线程1>问题1,主线程是怎么切换到...

  • android协程

    Kotlin的协程,本质上是一个线程框架,它可以方便的切换线程的上下文(如主线程切换到子线程/子线程切回主线程)。...

  • Kotlin 协程中,关于 runBlocking, launc

    引入大佬的话,Kotlin的协程,本质上是一个线程框架,它可以方便的切换线程的上下文(如主线程切换到子线程/子线程...

  • rxjava源码解析

    线程切换原理 案例 subscribeOn切换子线程 先看subscribe的执行,最后会执行Observable...

  • C++主线程调用Java方法

    1. C++ 全局调用Java方法 1.1 C++主线程调用Java方法 在 Android C++多线程-创建子...

  • C++ 线程类thread

    c++ 线程类 thread 注:join 是线程等待,等待子线程结束后在继续执行;线程等待要用sleep_for...

  • iOS13.x crash when push on the c

    iOS13.x 系统上子线程push操作必崩溃,需要切换到子线程

  • getView方法不执行

    可能是在子线程更新ui导致,尝试切换到主线程解决。

  • 关于Handler的简单理解

    handler主要用于线程的切换,因为在安卓中,主线程不能进行耗时操作,而子线程不能更新UI,所以当子线程网络请求...

网友评论

    本文标题:C++ ---- 子线程切换主线程

    本文链接:https://www.haomeiwen.com/subject/knzczktx.html