Cài đặt posix thread

Mọi người ơi, em có dùng thư viện pthread.h để lập trình đa luồng. Nhưng em chạy toàn ra lỗi “cannot find pthread: No such file or directory”.
Em làm theo hướng dẫn ở link này ạ: https://www.youtube.com/watch?v=d9s_d28yJq0&t=288s

Ngoài ra, em có thử cài đặt trên window theo cách sau:

  1. Project -> Manage Nuget Packages
  2. In browse Tab search for ‘pthread’
  3. Select Install[Search Results in Nuget packages]

Sau đó chạy chương trình sẽ bị lỗi timespec, trong link hướng dẫn có bảo xóa dòng 318-324 trong file pthread.h đi. Thì visual lại hiện lỗi C4716 ‘PrintHello’: must return a value
Nhưng hàm PrintHello em khai báo kiểu void.

Link hướng dẫn: https://stackoverflow.com/questions/48894212/visual-studio-2017-how-to-make-include-pthread-h-work/53011807

Mọi người ai biết fix lỗi giúp em với ạ. Hoặc không thì có cách nào chạy được pthreads mọi người chỉ cho em với ạ.

trước mình cũng tìm hiểu phần này nhưng mà nó bị vấn đề gì ấy mình ko nhớ, sau đó phải chuyển sang sử dụng thư viện process.h, b thử tham khảo link này xem: https://github.com/danomatika/ofxPd/issues/73

1 Like

à hình như tại vì pthread.h là thư viện dành cho unix hay sao ấy.
“I have a codebase that makes extensive use of pthread.h. On a windows visual studio project, this obviously doesn’t work since pthreads is a unix utility.”

2 Likes

Bạn nên dùng api của win32. pthread là api của linux

1 Like

clone vcpkg rồi install pthread thôi :V

git clone https://github.com/Microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
vcpkg integrate install 

rồi sau đó install pthread

vcpkg install pthread:x64-windows

bản này là cho 64-bit, nếu xài 32-bit thì gọi vcpkg install pthread:x86-windows

rồi mở VS lên tạo project mới thôi :V

2 Likes

Hồi trước học dùng pthread trên Windows thì mình tải compiler Mingw, trong phần chọn components thì mình tick vào mấy cái có liên quan như POSIX multithreading hay POSIX pthread gì đó. Cài xong thì mình code trên VS Code bình thường.

Hoặc có cách khác có vẻ tiện hơn cho bạn là chạy máy ảo cài Linux và code trực tiếp với POSIX standard luôn.

Bạn cũng có thể học C++ multithreading với std::thread của C++11 standard tích hợp sẵn trong Visual Studio luôn cũng được, lib multithreading của thư viện nào cũng có những khái niệm giống nhau.

Trong Qt hình như cũng có tích hợp POSIX pthread, cái này mình không chắc nhưng bạn có thể tải Qt về dùng thử, https://forum.qt.io/topic/47868/creating-pthread-in-qt-creator

3 Likes

Cảm ơn mọi người ạ. Em đã chạy được chương trình rồi.
Về linux em thiếu lpthread nên chương trình bị lỗi. Chi tiết trong link: https://www.includehelp.com/c-programming-questions/compiling-program-with-pthread-library-linux.aspx
Về window, e sẽ thử chạy theo cách mọi người nói ạ. :smiling_face_with_three_hearts:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?