0

RxCPP の初心者はまだ学習中です...

いくつかのスレッドによって継続的に変更されているアイテムのベクトルがあります。私は、このベクトルをオーバータイムでサブスクライブし、何かがプッシュされるたびに onNext を呼び出すことができるようにしたいと考えています。

void updateVec(std::vector<int> & v)
{
    v.push_back(1);
    v.push_back(2);
    ...
}

私のメインでは、次のようなものがあります。

int main()
{
    std::vector<int> vec{};
    
    auto values = rxcpp::observable<>::iterate(vec);

    auto t1 = std::thread(updateVec, std::ref(vec));

    values.subscribe([](int v)
        { std::printf("OnNext-> value: %d \n", v); }, []() { std::cout << "OnCompleted" << std::endl; });

    t1.join();
    return 0;
}

現在の出力はただ:であり、他にはOnCompleted何もありません。ベクトルvecがスレッドで更新されるたびt1に onNext が呼び出され、出力が次のようになることを期待していました。

OnNext-> value: 1
OnNext-> value: 2
OnNext-> value: 3
...

これを行う正しい方法は何ですか?

4

0 に答える 0