#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>
std::timed_mutex resource_mutex;
void worker(int id) {
for (int i = 0; i < 3; ++i) {
if (resource_mutex.try_lock_for(std::chrono::milliseconds(200))) {
std::cout << "Thread " << id << " acquired lock.\n";
std::this_thread::sleep_for(std::chrono::milliseconds(100));
resource_mutex.unlock();
} else {
std::cout << "Thread " << id << " couldn't acquire lock.\n";
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 4; ++i) {
threads.emplace_back(worker, i);
}
for (auto& t : threads) {
t.join();
}
return 0;
}