Nội dung text TH2-Mutex-Peterson
TH2: Bài toán loại trừ lẫn nhau trong chương trình đồng thời gồm 2 luồng Lưu ý: Sử dụng ngôn ngữ lập trình đã dùng ở bài TH1 để làm bài TH 2 như sau. Khai báo giao diện Lock dùng để loại trừ lẫn nhau giữa 2 luồng T0 và T1 : interface Lock { void requestCS(int tid); void releaseCS(int tid); } Cài đặt thuật toán Peterson để triển khai giao diện Lock cho bài toán loại trừ lẫn nhau trong hệ thống đồng thời có 2 luồng. Thuật toán Peterson int turn = 1; boolean waintCS[0] = false, wantCS[1] = false; void requestCS(int i) { // i = 0 hoặc 1 j = 1 - i; wantCS[i] = true; turn = j; while ( turn == j and wantCS[j] ); } void releaseCS(int i) { // i = 0 hoặc 1 wantCS[i] = false; } Sau khi cài đặt thuật toán trên, hãy xây dựng một chương trình để kiểm tra tính đúng đắn của thuật toán này. Cấu trúc chương trình kiểm tra này như sau: - Lớp luồng gồm có các biến thành viên và các hàm thành viên sau: Lock lock; // Được sử dụng để giải quyết bài toán mutex int tid; // Định danh của luồng (bằng 0 hoặc 1) A: một cấu trúc dữ liệu chia sẻ (mảng, danh sách liên kết, ngăn xếp, hàng đợi, cây, tệp, bảng csdl, ...) chứa N > 100 phần tử (kiểu số nguyên, số thực, ký tự, ...). Đợi khởi tạo rỗng