2009-07-27 22 views
5

Khái niệm thực hiện Thread-pool (trong C với sự trợ giúp từ pthreads) là gì? cách chỉ định một luồng để thực thi từ nhóm luồng?Thread-pool là gì?

Trả lời

9

Chủ đề nhóm là tập hợp một số chuỗi cố định được tạo khi khởi động ứng dụng. Các chủ đề sau đó ngồi chờ đợi cho các yêu cầu để đến với họ, thông thường thông qua một hàng đợi được kiểm soát bởi một semaphore. Khi một yêu cầu được thực hiện và có ít nhất một luồng đang chờ, luồng được đánh thức, yêu cầu dịch vụ và quay trở lại chờ đợi trên semaphore. Nếu không có chủ đề nào, yêu cầu xếp hàng cho đến khi có một luồng.

Nhóm chủ đề thường là cách quản lý tài nguyên hiệu quả hơn là chỉ bắt đầu một chuỗi mới cho mọi yêu cầu. Tuy nhiên, một số kiến ​​trúc cho phép tạo các chủ đề mới và thêm vào hồ bơi khi ứng dụng chạy, tùy thuộc vào yêu cầu tải.

2

Thêm vào câu trả lời của anon Tôi muốn đề cập đến rằng có các nhóm cố định luồng có số chuỗi cố định đang chạy trong chúng; Các nhóm luồng được lưu trong bộ nhớ cache có thể phát triển động và sau đó co lại khi không có công việc; Các hồ chứa luồng động cũng có thể bị ràng buộc bởi số lượng chủ đề tối đa và/hoặc độ dài tối đa của hàng đợi công việc. Tôi không nghĩ rằng thực sự là một thuật ngữ thiết lập cho loại công cụ này và hiếm khi gặp TP không cố định được viết bằng C nhưng ít nhất một người nên biết rằng TP cố định không phải là loại duy nhất trên mạng.

3

Để làm rõ điều gì đó trong câu trả lời trước:

Lý do mà instantiating ngày càng có nhiều chủ đề dẫn đến sự kém hiệu quả là bối cảnh thời gian chuyển đổi. Hệ điều hành chuyển định kỳ một luồng cho một luồng khác trên bộ xử lý. Điều này liên quan đến việc lưu trạng thái của một luồng và tải trạng thái của một luồng khác từ bộ nhớ, do đó, nó mất thời gian không đáng kể, N ms, cho mỗi chuyển đổi ngữ cảnh.

Ví dụ: nếu bạn có 10 luồng, bối cảnh chuyển đổi mất 10 * N mili giây. Nếu bạn có 1000 chủ đề, nó là 1000 * N ms. Khi số lượng các chủ đề đồng thời tăng lên, cuối cùng việc chuyển đổi bối cảnh bắt đầu áp đảo bất kỳ hiệu quả nào bắt nguồn từ đa luồng. Ứng dụng của bạn có vị trí ngọt ngào về số lượng chủ đề tốt nhất. Khi bạn xác định số ngọt này bằng thử nghiệm, bạn có thể đặt kích thước tối đa của nhóm chủ đề thành số lượng chuỗi đó, nhờ đó có được hiệu quả tối đa từ đa luồng.

+0

Rất khó có thể mất đến 1 ms để chuyển ngữ cảnh, thông thường, chúng cũng giống với các dòng của chúng tôi. Mọi thứ khác là rất tốt đẹp mặc dù. – CrazyCasta

+0

người cho biết N là một số nguyên và ai nói nó là> = 1? – Blah0x7B9

+0

Sử dụng các đơn vị ms gợi ý rằng thời gian sẽ theo thứ tự của ms. Tôi tin rằng hầu hết mọi người đọc câu trả lời của bạn sẽ không nghĩ rằng bối cảnh thời gian chuyển đổi là xung quanh nói 1 chúng tôi. – CrazyCasta

Các vấn đề liên quan