Tôi có một mong muốn cho các biến điều kiện kiểu POSIX trên Win32. Tôi có một số mã mà cần phải chạy trên XP, vì vậy tôi không thể sử dụng Vista/Server 2008's CONDITION_VARIABLE
.Thực hiện các biến điều kiện cho CRITICAL_SECTION cho Winthread cho XP
Hiện tại, nó sử dụng một lớp biến điều kiện giả, dựa trên việc rời khỏi phần quan trọng và báo hiệu sự kiện đặt lại tự động cho báo hiệu/thức dậy. Để chờ đợi trên biến điều kiện, nó rời khỏi phần quan trọng, WaitForSingleObject
s trên sự kiện, và sau đó reenters phần quan trọng. Điều này là tốt, nhưng nó không hỗ trợ phát sóng, và có thể có các vấn đề khác liên quan đến công bằng, mà tôi không quan tâm quá nhiều về.
Chúng tôi sử dụng tăng, vì vậy tôi biết mình có thể sử dụng chuỗi tăng hoặc pthreads-win32, hỗ trợ các biến điều kiện, nhưng lý tưởng là tôi muốn giao diện được như vậy mà tôi có thể thả vào thực hiện của Microsoft khi/nếu nó có thể sử dụng nó trực tiếp. Tôi đã thấy Strategies for Implenting POSIX Condition Variables on Win32, nhưng giải pháp "tốt nhất" (chính xác nhất) sử dụng Mutex chứ không phải là CRITICAL_SECTION
. Có một bản phác thảo về việc triển khai với một CRITICAL_SECTION
trong second part, nhưng nó không đầy đủ và các giải pháp khác với CRITICAL_SECTION
s lo lắng cho tôi do những lo ngại được nêu trong bài viết.
Tóm lại, làm cách nào để thực hiện đúng, không nhất thiết phải công bằng (nhưng điều đó sẽ tốt đẹp), biến điều kiện trên win32 cho các phần quan trọng sao cho tôi có thể thực hiện Microsoft khi nó có sẵn cho tôi?
Có vẻ ổn! Cảm ơn nhiều. –