diff options
author | David Robillard <d@drobilla.net> | 2013-02-04 00:54:25 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2013-02-04 00:54:25 +0000 |
commit | 5034a4b8cfcbc57423028031419f0f38a2ffc405 (patch) | |
tree | 78a035592d478961c70f797a73b6b09fe5fe486b /test/queue_test.cpp | |
parent | 125de9306bc724d70dd377c5cadf1af98a5db933 (diff) | |
download | raul-5034a4b8cfcbc57423028031419f0f38a2ffc405.tar.gz raul-5034a4b8cfcbc57423028031419f0f38a2ffc405.tar.bz2 raul-5034a4b8cfcbc57423028031419f0f38a2ffc405.zip |
Replace Raul::thread with std::thread.
git-svn-id: http://svn.drobilla.net/lad/trunk/raul@5047 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'test/queue_test.cpp')
-rw-r--r-- | test/queue_test.cpp | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/test/queue_test.cpp b/test/queue_test.cpp index b13c13f..15e5975 100644 --- a/test/queue_test.cpp +++ b/test/queue_test.cpp @@ -22,11 +22,11 @@ #include <atomic> #include <iostream> #include <string> +#include <thread> #include <vector> #include "raul/SRMWQueue.hpp" #include "raul/SRSWQueue.hpp" -#include "raul/Thread.hpp" #include "raul/fmt.hpp" using namespace std; @@ -61,26 +61,22 @@ struct WriteAction { // The victim SRMWQueue<WriteAction> queue(QUEUE_SIZE); -class WriteThread : public Thread { -public: - WriteThread() {} - -protected: - void _run() { - while (!_exit_flag) { - for (unsigned j=0; j < PUSHES_PER_ITERATION; ++j) { - unsigned i = rand() % NUM_DATA; - if (queue.push(WriteAction(i))) { - ++(data[i].write_count); - //cout << "WRITE " << i << "\r\n"; - } else { - //cerr << "FAILED WRITE\r\n"; - } +static void +test_write(bool* exit_flag) +{ + while (!*exit_flag) { + for (unsigned j=0; j < PUSHES_PER_ITERATION; ++j) { + unsigned i = rand() % NUM_DATA; + if (queue.push(WriteAction(i))) { + ++(data[i].write_count); + //cout << "WRITE " << i << "\r\n"; + } else { + //cerr << "FAILED WRITE\r\n"; } } - - cout << "Writer exiting." << endl; } + + cout << "Writer exiting." << endl; }; // Returns 0 if all read count/write count pairs are equal, @@ -129,11 +125,12 @@ main() } cout << "Testing concurrent reading/writing" << endl; - vector<WriteThread*> writers(NUM_WRITERS, NULL); + bool exit_flags[NUM_WRITERS]; + vector<std::thread*> writers(NUM_WRITERS, NULL); - for (unsigned i=0; i < NUM_WRITERS; ++i) { - writers[i] = new WriteThread(); - writers[i]->start(); + for (unsigned i = 0; i < NUM_WRITERS; ++i) { + exit_flags[i] = false; + writers[i] = new std::thread(test_write, &exit_flags[i]); } // Read @@ -158,8 +155,10 @@ main() cout << "Processed " << total_processed << " requests" << endl; // Stop the writers - for (unsigned i=0; i < NUM_WRITERS; ++i) + for (unsigned i = 0; i < NUM_WRITERS; ++i) { + exit_flags[i] = true; writers[i]->join(); + } //cout << "\n\n****************** DONE *********************\n\n"; |