Bài thực hành số Lập trình thread Ghi chú: Sinh viên nộp trang web: www.cse.hcmut.edu.vn/portal File nộp đặt tên là: lab6.tar.bz2 SV chỉnh sửa source code mẫu thấy cần thiết Mọi gian lận nhận điểm KHÔNG bị phát Giới thiệu 1.1 Mục tiêu Viết chương trình C Linux để nhân hai vector sử dụng kỹ thuật lập trình multi-thread 1.2 Kiến thức cần biết Lập trình C Linux Lập trình multi-thread Mutex Makefile 1.3 Mơ tả chương trình Đầu vào (Input) chương trình: Hai vector chứa số nguyên Số thread cần sinh Đầu (Output) chương trình: Kết việc nhân vector 1.4 Ý tưởng thực chương trình Giả sử có n thread Chia vector làm n phần Mỗi thread nhận nhiệm vụ tính tốn phần, sau thread cộng kết với kết tổng chương trình 1.5 Một số kỹ thuật lập trình 1.5.1 Xử lý thơng số nhập vào từ chương trình Một chương trình tốt thường cho phép người dùng thiết lập vài thơng số chạy chương trình, chẳng hạn thực lệnh: SinhVienZone.com https://fb.com/sinhvienzonevn $ ls -R người dùng truyền vào thông số -R để liệt kê file thư mục không thư mục hành mà thư mục thư mục hành có Sau đoạn chương trình mẫu, sử dụng hàm getopt() để xử lý thông số -R trên: int opt; extern char *optarg; while ((opt = getopt(argc, argv, "R")) != EOF) { switch (opt) { case 'R': // Option -R occurs // Proccess that option here break; default: // Other options break; } } 1.5.2 Xử lý file cấu hình File cấu hình thường dạng text có cấu trúc (đơn giản) Ta thường sử dụng hàm sau để xử lý dạng file này: fopen: mở file fscanf: lấy liệu với định dạng xác định trước fgets: lấy liệu với định dạng chưa xác định fclose: đóng file mở 1.5.3 Kỹ thuật lập trình thread Tham khảo slide lớp Yêu cầu Chương trình sau biên dịch có tên mulvector, hỗ trợ thơng số sau: -h: Hiển thị thông tin hướng dẫn sử dụng chương trình -n nthreads: Chọn số thread sinh chương trình file1: Chọn file input số 1, file chứa liệu vector Tên file mặc định input1.txt file2: Chọn file input số 2, file chứa liệu vector thứ hai Tên file mặc định input2.txt Cú pháp chạy chương trình mulvector: mulvector [-h] [-n nthreads] file1 file2 Kết chương trình in hình Lưu ý xử lý option: Nếu dòng nhập vào khơng với cú pháp thì báo lỗi, chương trình SinhVienZone.com https://fb.com/sinhvienzonevn Thơng tin hướng dẫn sử dụng chương trình hiển thị người dùng nhập vào dòng lệnh mulvector [-h] Định dạng file input File input chứa phần tử vector tương ứng, tất phần tử phải cách khoảng trắng Chương trình đọc file input để xác định xem có phần tử vector Chương trình quan tâm đến hàng file input (không xử lý liệu hàng kế tiếp) 11 25 36 File input biểu diễn vector gồm phần tử là: 11, 25, 36 SinhVienZone.com https://fb.com/sinhvienzonevn ... hàng file input (không xử lý liệu hàng kế tiếp) 11 25 36 File input biểu diễn vector gồm phần tử là: 11, 25, 36 SinhVienZone. com https://fb .com/ sinhvienzonevn ... Lưu ý xử lý option: Nếu dòng nhập vào khơng với cú pháp thì báo lỗi, chương trình SinhVienZone. com https://fb .com/ sinhvienzonevn Thông tin hướng dẫn sử dụng chương trình hiển thị người dùng nhập...$ ls -R người dùng truyền vào thông số -R để liệt kê file thư mục không thư mục hành mà thư mục thư mục hành có Sau đoạn chương trình mẫu, sử dụng hàm getopt() để xử lý thông số -R trên: int