Bài tập về cài đặt các thuật toán lập lịch cho CPU ( FCFS, FJFS..).
Trang 1 trong tổng số 1 trang
Bài tập về cài đặt các thuật toán lập lịch cho CPU ( FCFS, FJFS..).
#include <stdio.h>
#include <windows.h>
HANDLE s;
int count=0;
void countthread() // Tang bien dem len 1000 lan
{ int x;
for (int i=0; i<1000; i++ )
{ WaitForSingleObject(s,INFINITE); // Down()
//begin of critical section
x=count;
x ;
for(int j=0; j<20000; j++); // tao ngat tien trinh
// Admin: Không phải, vòng lặp trên "mô phỏng" sự "trễ" một lúc, tức "làm gì đó" khá lâu !
count=x;
//end of critical section
ReleaseSemaphore(s,1,0); // Up()
}
}
void main()
{
HANDLE h[4]; DWORD id;
s=CreateSemaphore(0,1,1,0); //
for (int i=0; i<4; i++ )
h[i]=CreateThread( NULL,0,(LPTHREAD_START_ROUTINE) countthread,
(VOID *)i,0,&id);
WaitForMultipleObjects(4,h,TRUE,INFINITE);
printf("count=%dn",count);
CloseHandle(s);
}
Admin
- Đây chỉ đơn giản là demo một chương trình đa luồng (5 luồng) cùng chung code là hàm countthread với chức năng tăng biến đếm count dùng chung lên 1000 đơn vị !
- Do 5 luồng cùng đồng thời tìm cách tăng biến count (tài nguyên chung), cần thiết phải dùng đèn hiệu s nhị phân không tên để bảo vệ đoạn tương tranh sao cho mỗi thời điểm chỉ 1 luồng được thao tác với count (đảm bảo tính Loại trừ tương hỗ), các luồng khác có nhu cầu tăng count phải "ngủ" tại WaitForSingleObject(s,INFINITE).
- Sau khi tăng count xong, luồng hiện hành phải gọi hàm ReleaseSemaphore(s,1,0) để tăng giá trị của đèn s lên 1 (chuyển màu từ Đỏ sang Xanh).
- Thực chất biến s chứa Mục quản của đèn hiệu tương ứng.
#include <windows.h>
HANDLE s;
int count=0;
void countthread() // Tang bien dem len 1000 lan
{ int x;
for (int i=0; i<1000; i++ )
{ WaitForSingleObject(s,INFINITE); // Down()
//begin of critical section
x=count;
x ;
for(int j=0; j<20000; j++); // tao ngat tien trinh
// Admin: Không phải, vòng lặp trên "mô phỏng" sự "trễ" một lúc, tức "làm gì đó" khá lâu !
count=x;
//end of critical section
ReleaseSemaphore(s,1,0); // Up()
}
}
void main()
{
HANDLE h[4]; DWORD id;
s=CreateSemaphore(0,1,1,0); //
for (int i=0; i<4; i++ )
h[i]=CreateThread( NULL,0,(LPTHREAD_START_ROUTINE) countthread,
(VOID *)i,0,&id);
WaitForMultipleObjects(4,h,TRUE,INFINITE);
printf("count=%dn",count);
CloseHandle(s);
}
Admin
- Đây chỉ đơn giản là demo một chương trình đa luồng (5 luồng) cùng chung code là hàm countthread với chức năng tăng biến đếm count dùng chung lên 1000 đơn vị !
- Do 5 luồng cùng đồng thời tìm cách tăng biến count (tài nguyên chung), cần thiết phải dùng đèn hiệu s nhị phân không tên để bảo vệ đoạn tương tranh sao cho mỗi thời điểm chỉ 1 luồng được thao tác với count (đảm bảo tính Loại trừ tương hỗ), các luồng khác có nhu cầu tăng count phải "ngủ" tại WaitForSingleObject(s,INFINITE).
- Sau khi tăng count xong, luồng hiện hành phải gọi hàm ReleaseSemaphore(s,1,0) để tăng giá trị của đèn s lên 1 (chuyển màu từ Đỏ sang Xanh).
- Thực chất biến s chứa Mục quản của đèn hiệu tương ứng.
lamtienkhoa(102c)- Tổng số bài gửi : 43
Join date : 28/02/2011
Similar topics
» Thi Kiểm tra Giữa kỳ Lần 3
» Bài toán về thuật giải FCFS
» Thảo luận Bài 6
» Thảo luận Bài 8
» Thuật giải điều phối SJF. và FCFS
» Bài toán về thuật giải FCFS
» Thảo luận Bài 6
» Thảo luận Bài 8
» Thuật giải điều phối SJF. và FCFS
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết