| 1 | #include <boost/interprocess/sync/named_semaphore.hpp> | 
|---|
| 2 | using namespace boost::interprocess; | 
|---|
| 3 |  | 
|---|
| 4 | #include <boost/date_time/posix_time/posix_time.hpp> | 
|---|
| 5 | using namespace boost::posix_time; | 
|---|
| 6 | #include <iostream> | 
|---|
| 7 | using namespace std; | 
|---|
| 8 |  | 
|---|
| 9 |  | 
|---|
| 10 | int main() { | 
|---|
| 11 |  | 
|---|
| 12 | const size_t iterations = 100000; | 
|---|
| 13 | named_semaphore sem1(open_only_t(), "sem1"); | 
|---|
| 14 | named_semaphore sem2(open_only_t(), "sem2"); | 
|---|
| 15 |  | 
|---|
| 16 | ptime start = boost::posix_time::microsec_clock::local_time(); | 
|---|
| 17 | for(size_t i = 0; i < iterations; ++i) { | 
|---|
| 18 | sem1.post(); | 
|---|
| 19 | sem2.wait(); | 
|---|
| 20 | } | 
|---|
| 21 |  | 
|---|
| 22 | ptime end = boost::posix_time::microsec_clock::local_time(); | 
|---|
| 23 | time_duration delta = end - start; | 
|---|
| 24 |  | 
|---|
| 25 | double seconds = double(delta.total_nanoseconds())/1000000000.0; | 
|---|
| 26 |  | 
|---|
| 27 | cout << "Total elapsed time: " << seconds << endl;; | 
|---|
| 28 | cout << "Time per iteration: " << (seconds/double(iterations)) << endl; | 
|---|
| 29 | return 0; | 
|---|
| 30 | } | 
|---|