...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <mutex>
#include <thread>
const size_t max_threads = 10;
void do_work(size_t i, std::mutex *pm) {
std::lock_guard<std::mutex> guardlk(*pm);
// Access data protected by the lock.
}
void start_threads() {
std::thread threads[max_threads];
std::mutex m;
for (size_t i = 0; i < max_threads; ++i) {
threads[i] = std::thread(do_work, i, &m);
}
}
|
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <mutex>
#include <thread>
const size_t max_threads = 10;
void do_work(size_t i, std::mutex *pm) {
std::lock_guard<std::mutex> guardlk(*pm);
// Access data protected by the lock.
}
std::mutex m;
void start_threads() {
std::thread threads[max_threads];
for (size_t i = 0; i < max_threads; ++i) {
threads[i] = std::thread(do_work, i, &m);
}
}
|
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <mutex>
#include <thread>
const size_t max_threads = 10;
void do_work(size_t i, std::mutex *pm) {
std::lock_guard<std::mutex> guardlk(*pm);
// Access data protected by the lock.
}
void run_threads() {
std::thread threads[max_threads];
std::mutex m;
for (size_t i = 0; i < max_threads; ++i) {
threads[i] = std::thread(do_work, i, &m);
}
for (size_t i = 0; i < max_threads; ++i) {
threads[i].join();
}
} |
...