Xin lỗi vì tiếng Anh của tôi - tôi là người Nga.Khóa mutex trong một chủ đề và mở khóa nó trong một số khác
Mã này có chính xác và di động không?
void* aThread(void*)
{
while(conditionA)
{
pthread_mutex_lock(mutex1);
//do something
pthread_mutex_unlock(mutex2);
}
}
void* bThread(void*)
{
while(conditionB)
{
pthread_mutex_lock(mutex2);
//do something
pthread_mutex_unlock(mutex1);
}
}
Thực tế trong ứng dụng đích, tôi có ba luồng - hai để viết mảng và một để đọc. Và tôi cần rằng ngay sau khi một trong những chủ đề thay đổi mảng thứ ba thread hiển thị nội dung của mảng.
Ok. Nhưng những gì về mở khóa mutex đã bị khóa trong thread khác? Hành vi không xác định là tốt? –
Như đã nói: "nếu một chuỗi cố gắng mở khóa một mutex mà nó không bị khóa ... UB" – user562374