Tôi có một chương trình chạy hai hoạt động khác nhau và tôi muốn chia sẻ các biến giữa chúng.C++, cách chia sẻ dữ liệu giữa các quy trình hoặc chủ đề
Hiện tại, tôi đang sử dụng chuỗi thay vì quy trình ngã ba nhưng tôi đang gặp sự cố khi chia sẻ biến ngay cả khi tôi tuyên bố chúng là dễ bay hơi.
tôi đã cố gắng với đẩy mạnh thực hiện:
boost::thread collisions_thread2(boost::bind(function_thread2);
bằng cách tuyên bố các biến được chia sẻ như không ổn định, nhưng có vẻ như function_thread2() chức năng không có khả năng nhìn thấy những thay đổi trên các biến chia sẻ.
gì tôi muốn làm là một cái gì đó như:
thread1:
while(true){
//..do somet stuff
check variable1
}
thread2:
while(true){
do some other stuff
check and write on variable1
}
Bạn có thể gợi ý cho tôi một hướng dẫn hoặc một phương pháp để dễ dàng chia sẻ biến giữa các chủ đề? Có thể tăng thư viện có thể hữu ích trong trường hợp này không? Bạn có nghĩ nên sử dụng fork() tốt hơn không?
Tôi biết rằng tôi phải sử dụng mutex để tránh các tình huống quan trọng, nhưng tôi chưa bao giờ sử dụng nó.
Kiểm tra xem [câu hỏi này] (http://stackoverflow.com/questions/118199/c-thread-shared-data) giúp. Và cuối cùng [Boost Thread Synchronization] (http://www.boost.org/doc/libs/1_49_0/doc/html/thread/synchronization.html) – jweyrich
dễ bay hơi không liên quan gì đến chủ đề –
Bạn thậm chí không cần ' dễ bay hơi để chia sẻ các biến. Biến toàn cục được chia sẻ theo mặc định. Nhưng đây là một điều xấu vì nó làm cho việc tạo ra các cuộc đua dữ liệu trở nên dễ dàng. Khi bạn có các cuộc đua dữ liệu, bạn không thể mong đợi chương trình của bạn hoạt động hợp lý, vì vậy có thể bạn đang chạy vào một số điều này. Bạn cần phải đăng thêm mã thực của mình để được trợ giúp chẩn đoán các cuộc đua dữ liệu. – bames53