|
1 | 1 | # project2_HDH |
| 2 | +- [Bài 1. Đồng bộ giữa các tiểu trình ]() |
| 3 | +- [Bài 2. Đồng bộ giữa các tiểu trình và tiến trình]() |
| 4 | + |
| 5 | + - [2.1 Đông bộ các tiểu trình]() |
| 6 | + - [2.2 Đông bộ các tiến trình]() |
| 7 | +- [Bài 3. Đồng bộ số lượng giữa các tiểu trình ]() |
| 8 | +- [Tham khảo]() |
| 9 | + |
| 10 | + - [Thread in C]() |
| 11 | + - [Mulitithread in C](https://www.geeksforgeeks.org/multithreading-c-2/) |
| 12 | + - [Semaphore in C]() |
| 13 | + |
| 14 | + |
| 15 | +## Bài 1 Đồng bộ giữa các tiểu trình |
| 16 | +sem_t mutex: đồng bộ `Độc quyền truy xuất ` với value = 1 |
| 17 | +## Bài 2 Đồng bộ giữa các tiểu trình và tiến trình |
| 18 | +sem_t *sem1, *sem2: đồng bộ `Độc quyền truy xuất` giữa 2 tiểu trình |
| 19 | +``` |
| 20 | +*sem1: sau khi A1 chạy xong --> A1 sẽ up (value) --> B2 lúc này mới chạy |
| 21 | +*sem2: sau khi B1 chạy xong --> B1 sẽ up (value) --> A2 lúc này mới được chạy |
| 22 | +``` |
| 23 | +## Bài 3 Đồng bộ số lượng giữa các tiểu trình |
| 24 | +Trong bài này sẽ có 5 sem |
| 25 | +sem_t sem1, sem2, sem3, sem4 và sem_t mutex |
| 26 | + |
| 27 | +``` |
| 28 | +sem1: điều phối hẹn hò giữa 2H -> 1H20 --> Sau khi 2 H chạy thì H20 mới được chạy |
| 29 | +sem2: điều phối hẹn hò giữa 1O -> 1H20 --> Sau khi O chạy thì H20 mới được chạy |
| 30 | +sem3: điều phối hẹn hò giữa 1H20 -> 1O --> sau khi H20 chạy thì O mới được chạy ( Trong lần đầu chạy thì O không phải đợi vì value initial = 1 ) |
| 31 | +sem4: điều phối hẹn hò giữa 1H20 -> 2H --> sau khi H20 chạy thì 2H mới được chạy ( Trong lần đầu chạy thì H không phải đợi vì value initial = 2 ) |
| 32 | +mutex: điều phối truy xuất độc quyền giữa các thread H2O |
| 33 | +``` |
| 34 | +## Tham khảo |
| 35 | +https://www.geeksforgeeks.org/thread-functions-in-c-c/ |
| 36 | +https://www.geeksforgeeks.org/multithreading-c-2/ |
| 37 | +https://www.geeksforgeeks.org/use-posix-semaphores-c/ |
0 commit comments