Bài giảng lập trình IPC và thread đh bách khoa TP HCM

60 9 0
Bài giảng lập trình IPC và thread   đh bách khoa TP HCM

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình IPC thread Bộ mơn Hệ thống Mạng máy tính Khoa Khoa học kỹ thuật máy tính Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Lập trình Linux  Lập trình IPC  Dùng pipe  Dùng semaphore  Lập trình thread  Cơ lập trình POSIX pthread  Giải tranh chấp POSIX thread Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Lập trình Linux  Lập trình IPC  Dùng pipe  Dùng semaphore  Lập trình thread  Cơ lập trình POSIX pthread  Giải tranh chấp POSIX thread Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Giới thiệu IPC  Mục tiêu IPC  IPC: Inter-Process Communication  Cho phép phối hợp hoạt động trình hệ thống  Giải đụng độ vùng tranh chấp  Truyền thông điệp từ trình đến trình khác  Chia sẻ thơng tin q trình với Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Giao tiếp đồng  Communication Truyền liệu Chia sẻ thông tin Các chế: Pipe Signal Message queue Shared memory Socket RPC/RMI Synchronization Giải tranh chấp Đảm bảo thứ tự xử lý Các chế: Lock file Semaphore Mutex (pthread) Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Lập trình Linux  Lập trình IPC  Dùng pipe  Dùng semaphore  Lập trình thread pthread Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Giao tiếp thông qua PIPE  Là kênh truyền liệu process với theo dạng FIFO Writer Reader P1 P2 Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Các tác vụ pipe  Write: #include ssize_t write(int fd, const void *buf, size_t count)  Read: #include ssize_t read(int fd, const void *buf, size_t count) Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Hai loại pipe  Unnamed pipe  có ý nghĩa cục  dành cho process có quan hệ bố với  Named pipe (cịn gọi FIFO)  có ý nghĩa tồn cục  sử dụng cho process không liên quan bố Khoa KH&KTMT - Đại học Bách Khoa Tp HCM Unnamed pipe  Tạo unnamed pipe: #include int pipe(int filedes[2]);  Kết  Thành công, kết thực thi hàm pipe() 0, có hai file descriptor tương ứng trả filedes[0], filedes[1]  Thất bại: hàm pipe() trả -1, mã lỗi biến ngoại errno Khoa KH&KTMT - Đại học Bách Khoa Tp HCM 10 Lập trình POSIX thread  Lưu ý tham số thứ start_routine  nên có kiểu trả trỏ kiểu void, khơng phải có type casting gọi pthread_create()  nên có tham số kiểu trỏ void Tham số hàm start_routine truyền vào thông qua tham số thứ hàm pthread_create()  Lưu ý tham số thứ arg  tham số truyền vào cho hàm start_routine  cần truyền nhiều tham số nên định nghĩa arg kiểu cấu trúc struct Khoa KH&KTMT - Đại học Bách Khoa Tp HCM 46 Lập trình POSIX thread  Thread kết thúc thực thi  hàm start_routine kết thúc  có lời gọi hàm pthread_exit() tường minh  thread bị ngắt lời gọi hàm pthread_cancel()  process kết thúc  thread gọi system call exec()  Lời gọi hàm kết thúc thread tường minh void pthread_exit(void * retval); Khoa KH&KTMT - Đại học Bách Khoa Tp HCM 47 Ví dụ #include #include void* func(void* arg) { int i; for (i = 0; i < 2; i++) { printf ("This is thread %d\n", *((int*)arg)); sleep (1); } } Khoa KH&KTMT - Đại học Bách Khoa Tp HCM 48 Ví dụ (tt) int main (int argc, char **argv) { int i; pthread_t tid[3]; for (i=0; i

Ngày đăng: 18/04/2021, 08:03

Tài liệu cùng người dùng

Tài liệu liên quan