Sakura
Thú CƯng :
Số bài viết : 1124 Điểm : 1688 Được cảm ơn : 35 Ngày sinh : 03/11/1990 Tham gia ngày : 16/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : IT Student
| Tiêu đề: Bài thực hành OS tuần 4 - Tạo và quản lý các tiểu trình - Thread. 31/3/2011, 10:09 | |
| Tiêu đề đã nói quá rõ, các bạn, ai chưa có thì copy về tham khảo để tuần sau tiếp tục. Bài còn rất đơn sơ, ai thik tinh chỉnh gì thì cứ việc nha! - Code:
-
//Thuc hanh OS tuan 4 //Tao va quan ly cac tieu trinh - Thread.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <Windows.h> #include <iostream>
using namespace std;
void Clrscr(void) { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; HANDLE hConsoleOut; COORD Home = {0,0}; DWORD dummy;
hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);
FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy); csbiInfo.dwCursorPosition.X = 0; csbiInfo.dwCursorPosition.Y = 0; SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition); }
void GotoXY(short x,short y) { HANDLE hConsoleOutput; COORD Cursor_an_Pos = { x,y}; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos); }
void SetColor(WORD color) { HANDLE hConsoleOutput; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info; GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
WORD wAttributes = screen_buffer_info.wAttributes; color &= 0x000f; wAttributes &= 0xfff0; wAttributes |= color;
SetConsoleTextAttribute(hConsoleOutput, wAttributes); }
void SetBGColor(WORD color) { HANDLE hConsoleOutput; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info; GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
WORD wAttributes = screen_buffer_info.wAttributes; color &= 0x000f; color <<= 4; wAttributes &= 0xff0f; wAttributes |= color;
SetConsoleTextAttribute(hConsoleOutput, wAttributes); }
int WhereX( void ) { HANDLE hConsoleOutput; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO coninfo; GetConsoleScreenBufferInfo (hConsoleOutput, &coninfo); return coninfo.dwCursorPosition.X; }
int WhereY( void ) { HANDLE hConsoleOutput; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO coninfo; GetConsoleScreenBufferInfo (hConsoleOutput, &coninfo); return coninfo.dwCursorPosition.Y; }
int MaxX() { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; return csbiInfo.dwSize.X; }
int MaxY() { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; return csbiInfo.dwSize.Y; }
void ThreadPro(LPVOID chon) { char ch = (char)chon; int x = 0; int y = 0; switch(ch) { case '1': while(true) { GotoXY(20, 20); cout<<x; x++; Sleep(500); } break;
case '2': while(true) { GotoXY(30, 30); cout<<y; y++; Sleep(500); } break; } }
void menu() { HANDLE hTh1, hTh2; DWORD idTh1, idTh2; hTh1 = hTh2 = NULL;
char chon; do { Clrscr(); cout<<"\n=====TIEU TRINH=====\n"; cout<<"0. THOAT"; cout<<"\n1. Tieu trinh 1."; cout<<"\n2. Tieu tirnh 2."; cout<<"\n3. Tam dung tieu trinh 1."; cout<<"\n4. Tam dung tieu trinh 2."; cout<<"\n5. Tiep tuc tieu trinh 1."; cout<<"\n6. Tiep tuc tieu trinh 2."; cout<<"\n7. Do uu tien tieu trinh 1."; cout<<"\n8. Do uu tien tieu trinh 2."; cout<<"\na. Cham dut tieu trinh 1."; cout<<"\nb. Cham dut tieu trinh 2."; cout<<"\nCHON: "; chon = _getche(); switch(chon) { case '0': return;
case '1': if(!hTh1) { hTh1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadPro, (LPVOID)chon, 0, (LPDWORD)idTh1); if(hTh1 != NULL) cout<<"Tao thanh cong"; } break;
case '2': if(!hTh2) { hTh2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadPro, (LPVOID)chon, 0, (LPDWORD)idTh2); if(hTh2 != NULL) cout<<"Tao thanh cong"; } break;
case '3': SuspendThread(hTh1); break;
case '4': SuspendThread(hTh2); break;
case '5': ResumeThread(hTh1); break;
case '6': ResumeThread(hTh2); break;
case '7': SetThreadPriority(hTh1, 15); break;
case '8': SetThreadPriority(hTh2, 15); break;
case 'a': TerminateThread(hTh1, -1000 ); hTh1 = NULL; break;
case 'b': TerminateThread(hTh2, -1000 ); hTh2 = NULL; break;
default: cout<<"\nKhong co phim chuc nang nay."; _getch(); break; } }while(1);
} int main() { menu(); return 0; } |
|
stevenhung
Member Năng Động
Số bài viết : 122 Điểm : 196 Được cảm ơn : 10 Ngày sinh : 20/03/1990 Tham gia ngày : 26/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : Student Chăm ngôn : Go far away
| Tiêu đề: Re: Bài thực hành OS tuần 4 - Tạo và quản lý các tiểu trình - Thread. 31/3/2011, 10:20 | |
| k đi học 2 buổi càng ngày càng *** ra rùi, pữa nào ewa_Hoang chỉ giáo lại cho tui tí nha, thank trước |
|