aboutsummaryrefslogtreecommitdiffstats
path: root/host/examples
diff options
context:
space:
mode:
authorAaron Rossetto <aaron.rossetto@ni.com>2022-03-04 12:00:47 -0600
committerAaron Rossetto <aaron.rossetto@ni.com>2022-03-07 09:21:49 -0600
commit7e8c52d80793e4f406177e82602cdf293a8a7fa8 (patch)
treeb4f2226c90619d33c8273705e3f05c3001f0d9b7 /host/examples
parent89258f2d1855a3a9f3de1813c1ccc3faddfb7756 (diff)
downloaduhd-7e8c52d80793e4f406177e82602cdf293a8a7fa8.tar.gz
uhd-7e8c52d80793e4f406177e82602cdf293a8a7fa8.tar.bz2
uhd-7e8c52d80793e4f406177e82602cdf293a8a7fa8.zip
tests: Atomicize counters in benchmark_rate
The counters that keep track of overruns, underruns, number of samples transferred, etc., were not atomic. Thus, running benchmark_rate with multiple threads would result in inaccurate statistics being reported at the end of the run. This commit makes those counters atomic variables so that they are updated properly.
Diffstat (limited to 'host/examples')
-rw-r--r--host/examples/benchmark_rate.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/host/examples/benchmark_rate.cpp b/host/examples/benchmark_rate.cpp
index 5a3f5f181..41d3ff462 100644
--- a/host/examples/benchmark_rate.cpp
+++ b/host/examples/benchmark_rate.cpp
@@ -32,16 +32,16 @@ using start_time_type = std::chrono::time_point<std::chrono::steady_clock>;
/***********************************************************************
* Test result variables
**********************************************************************/
-unsigned long long num_overruns = 0;
-unsigned long long num_underruns = 0;
-unsigned long long num_rx_samps = 0;
-unsigned long long num_tx_samps = 0;
-unsigned long long num_dropped_samps = 0;
-unsigned long long num_seq_errors = 0;
-unsigned long long num_seqrx_errors = 0; // "D"s
-unsigned long long num_late_commands = 0;
-unsigned long long num_timeouts_rx = 0;
-unsigned long long num_timeouts_tx = 0;
+std::atomic_ullong num_overruns{0};
+std::atomic_ullong num_underruns{0};
+std::atomic_ullong num_rx_samps{0};
+std::atomic_ullong num_tx_samps{0};
+std::atomic_ullong num_dropped_samps{0};
+std::atomic_ullong num_seq_errors{0};
+std::atomic_ullong num_seqrx_errors{0}; // "D"s
+std::atomic_ullong num_late_commands{0};
+std::atomic_ullong num_timeouts_rx{0};
+std::atomic_ullong num_timeouts_tx{0};
inline auto time_delta(const start_time_type& ref_time)
{