updated examples with mutexes

This commit is contained in:
tastytea 2018-05-17 18:39:42 +02:00
vanhempi e7d1808f85
commit e51841fe20
Allekirjoittanut: tastytea
GPG avaimen ID: 59346E0EA35C67E5
2 muutettua tiedostoa jossa 25 lisäystä ja 10 poistoa

Näytä tiedosto

@ -9,6 +9,7 @@
#include <thread>
#include <chrono>
#include <memory>
#include <mutex>
#ifdef MASTODON_CPP
#include "mastodon-cpp.hpp"
#else
@ -39,16 +40,20 @@ int main(int argc, char *argv[])
std::uint8_t counter = 0;
while (true)
{
++counter;
std::cout << answer;
answer.clear();
if (counter == 10)
{
std::cerr << "Cancelling...\n";
ptr->cancel_stream();
break;
}
std::this_thread::sleep_for(std::chrono::seconds(2));
if (ptr != nullptr)
{
std::lock_guard<std::mutex> lock(ptr->get_mutex());
++counter;
std::cout << answer;
answer.clear();
if (counter == 10)
{
std::cerr << "Cancelling...\n";
ptr->cancel_stream();
break;
}
}
}
pub.join();
std::cout << '\n';

Näytä tiedosto

@ -11,6 +11,7 @@
#include <memory>
#include <vector>
#include <chrono>
#include <mutex>
// If we are compiling mastodon-cpp, use another include path
#ifdef MASTODON_CPP
@ -51,6 +52,16 @@ int main(int argc, char *argv[])
while (true)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
// Skip iteration if ptr points not to the Mastodon::API::http object
if (ptr != nullptr)
{
continue;
}
// Acquire lock to for the stream variable
std::lock_guard<std::mutex> lock(ptr->get_mutex());
// Parse event stream and clear it afterwards
std::vector<Easy::stream_event> events = Easy::parse_stream(stream);
stream.clear();
@ -85,7 +96,6 @@ int main(int argc, char *argv[])
cout << "Something undefined happened. 😱\n";
}
}
std::this_thread::sleep_for(std::chrono::seconds(1));
}
pub_tl.join();