Số lượng thread cho phép chạy đồng thời trên Windows

Chào mọi người!
Giúp em giải đáp thắc mắc này với ạ.
Issue: (giả định)
Giả sử một PC với processor có 6 core 12 thread. Theo em hiểu thì có 12 kernel thread, sau đó em viết một application desktop multithread và app này được coding trên C#.NET, em xử lí perfomance trên app với 24 thread (user thread). Khi chạy ứng dụng thì hệ điều hành Windows sẽ xử lí 12 user thread và còn lại 12 user thread nữa sẽ đứng đợi, hay là run cùng lúc 24 thread theo cơ chế bất đồng bộ( Asynchronous) ạ?

Trên đây là vấn đề em tự giả định để giải đáp thắc về số lượng thread cùng hoạt động trên Windows OS ạ.
Giúp em với ạ, em cảm ơn!

2 Likes

Việc bạn có thể dùng bao nhiêu thread mình từng tìm hiểu nhưng không nhớ rõ, nhưng user thread và hardware nó không giống nhau.

Còn việc bạn tạo thread quá số lượng thì không có sự chờ ở đây, mà windows sẽ crash app do ko đủ tài nguyên

(Mình từng code tạo 7-800 thread thì nó crash luôn :)))

5 Likes

có thể do bạn tạo quá nhiều thread nên bị tràn bộ nhớ cấp phát cho ứng dụng của bạn thôi.

5 Likes

Trong 1 thời điểm, CPU chỉ chỉ xử lý được vài thread tùy thuộc vào cấu hình CPU. Nếu quá nhiều thread thì sẽ có những thread phải xếp hàng.

4 Likes

bác trỏ đến tài liệu dẫn chứng cho em đọc với ạ, em cảm ơn

Mình chém gió nên không có nhé .

3 Likes

@@ thật không vậy bác, em đang thắc mắc bác còn troll em

cảm ơn bác, mà trường hợp của bác có thể do quá nhiều thread nên bị tràn bộ nhớ nên crash chăng?
em chỉ giả định khoảng 24 user thread thôi

Một core bình thường trong 1 thời điểm chỉ xử lý được 1 thread. Nếu core có HT thì có thể xử lý 2 thread.

Như vậy 1 con CPU i7 4 core 8 thread thì trong 1 thời điểm chỉ có thể xử lý tối đa 8 thread.
Trên máy tính có đến hàng nghìn thread.
Nhưng nhờ có OS nó sẽ bắt CPU làm mỗi thread một tý rồi lại ngừng và chuyển sang xử lý thread khác nên có cảm giác rất nhiều process và thread đều chạy.

PS: Chém gió thế.

4 Likes

quào! vậy là Windows OS sử dụng cơ chế bất đồng bộ(Asynchronous) cho các thread đúng không bác?
tại câu đầu bác nói sẽ xếp thread vào queue để xử lí thì là cơ chế đồng bộ (Synchronous)

mà bác bồi thêm câu chém gió thế làm em bất an =))
Cảm ơn bác nhiều ạ

Việc quản lý chuyển thread nó sẽ phức tạp hơn thế rất nhiều.
PS: Lại chém gió =))

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