Multithreading C++: Communication between two threads

Mình đang viết một chương trình tìm đường đi trong mê cung. Mê cung chỉ có 1 đường duy nhất dẫn đến lối ra, mình gọi là Path_Solution. Lối vào và lối ra của mê cung không thay đổi cho dù kích cỡ mê cung có tăng lên. Lối vào nằm ở top left corner, lối ra nằm ở bottom right corner. Yêu cầu: dùng multithreading trong C++. Thuật toán nào cũng được nên mình dùng depth first search.

Để đáp ứng được yêu cầu bài toán là multithreading thì mình tạo 2 thread, 1 thread sẽ bắt đầu đi từ trên xuống, thread kia đi từ dưới lên. Mỗi thread có cái list riêng của nó để lưu lại những vị trí nằm trong Path_Solution.

Vấn đề của mình bây giờ là làm sao để cho 2 cái thread nói chuyện được với nhau khi nó cùng đi qua 1 điểm chung nằm trong Path_Solution thì dừng lại. Bây giờ 2 cái thread nó chạy song song và chạy từ đầu này qua đầu kia luôn chứ không dừng lại khi gặp điểm chung. Các bạn có thể gợi ý cho mình giải quyết vấn đề đươc không?

3 Likes

mình không giỏi thuật toán nhưng cũng gợi ý cách làm thử,

  1. bạn cho 2 thằng cùng mark lại những chỗ đã đi qua, rồi so sánh realtime mỗi bước đi tiếp của thằng này thì đã có trong queue của thằng kia chưa, hoặc để cuối so sánh cũng được -> trace lại ra path. để cuối thì có thể sẽ ra muitlpath luôn nếu map support, chứ gặp nhau xong dừng chắc chỉ có 1 path
  2. Chia map thành 2 phần riêng biệt, rồi cho mỗi thằng scan nữa map đó (BFS, DFS gì đó) rồi tìm chỗ match của 2 map đó cũng sẽ ra path.
    Ko dám chắc đúng, nhờ thớt implement và đánh giá :grinning:
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?