Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Bài giảng "Lập trình an toàn - Chương 3: Kiểm soát xung đột Synchronization Technique" trình bày các nội dung: Khái niệm, đoạn găng (Critical Section), đèn hiệu (Semaphore), Mutex Event, SRW Lock. Hi vọng đây là một tài liệu hữu ích dành cho các bạn sinh viên Công nghệ thông tin dùng làm tài liệu học tập và nghiên cứu. | Chương 3. Kiểm soát xung đột Synchronization Technique Lương Ánh Hoàng hoangla@soict.hut.edu.vn Nội dung 3.1 Khái niệm 3.2 Đoạn găng (Critical Section). 3.3 Đèn hiệu (Semaphore) 3.4 Mutex 3.5 Event 3.6 SRW Lock 47 3.1 Khái niệm § Xung đột là vấn đề phát sinh khi nhiều luồng của chương trình chạy trên bộ vi xử lý đa nhân cùng truy nhập một tài nguyên hệ thống. § Ví dụ int x = 0; DWORD { WINAPI Thread(LPVOID lpParam) for (int i=0;i<2000000;i++) x++; return 0; } int _tmain(int argc, _TCHAR* argv[]) { HANDLE hThread1 = CreateThread(NULL,NULL,Thread,NULL,NULL,NULL); HANDLE hThread2 = CreateThread(NULL,NULL,Thread,NULL,NULL,NULL); WaitForSingleObject(hThread1,INFINITE); WaitForSingleObject(hThread2,INFINITE); printf("X=%d",x); getch(); return 0; } 48 3.2 Đoạn găng § Đoạn găng (Critical Section) là đoạn chương trình được bảo vệ bởi hệ điều hành sao cho tại mọi thời điểm chỉ có một luồng được phép thực thi. § Sử dụng § Khai báo: CRITICAL_SECTION cs § Khởi tạo: InitializeCriticalSection(&cs) § Sử dụng EnterCriticalSection(&cs) // Bắt đầu đoạn găng // Kết thúc đoạn găng LeaveCriticalSection(&cs) // DeleteCriticalSection(&cs) § Ví dụ § Đặc điểm: chỉ có tác dụng trong cùng một tiến trình 49 3.3 Đèn hiệu § Đèn hiệu (Semaphore) dùng để giới hạn số .