2012-10-21 28 views
5

Tôi đang xem xét việc viết một hoạt động chuyên sâu CPU chạy dài bằng cách sử dụng các Web Worker và dường như có thể đẩy CPU của khách hàng đến 100% với những điều này. (Xem Can Web Workers utilize 100% of a multi-core CPU?)Hạn chế sử dụng CPU của công nhân Web?

Có ai biết bất kỳ cách hiệu quả nào để hạn chế sử dụng CPU của nhân viên web không?

+0

Trước khi cố gắng trả lời bạn, bạn có tự hỏi mình rằng việc tải khách hàng với các tác vụ như vậy có hợp lý không? – MaxArt

+0

Tôi đang xem xét điều này đặc biệt về nghiên cứu tính khả thi của tính toán phân tán trên các máy khách được xây dựng trong HTML5. Tôi thực sự hiện đang cố gắng tìm ra cách hợp lý của dự án này là, và việc sử dụng CPU của khách hàng là vấn đề hiện tại của tôi. –

Trả lời

2

Thật vậy, có một cách.

Cấu trúc tính toán của bạn để chúng có thể được thực hiện bằng cách liên tục gọi một hàm thực hiện một phần công việc trước khi thoát. Ngay trước khi thoát, hãy sử dụng setTimeout để lên lịch một cuộc gọi mới trên chức năng của nhân viên trong vài phần nghìn giây. Thời gian chờ có thể được điều chỉnh để sử dụng thời gian của CPU hoặc ít hơn.

function doWork() { 
    var timer = new Date(); 

// do n cyles of work here 


timer = new Date() - timer; // time spent working 
setTimeout (doWork, timer); // wait an equivalent time for 50% processor load 
} 
+0

Điều này sẽ hoàn toàn phụ thuộc vào phần cứng của khách hàng chính xác? Tôi hy vọng sẽ tìm cách có thể giảm mức sử dụng cho một tỷ lệ cụ thể cho tất cả khách hàng. –

+0

Bằng phần cứng, tôi đoán bạn có nghĩa là hiệu suất. Có nhưng bạn có thể đo thời gian dành cho công việc rồi đợi một thời gian thích hợp để tải trọng trung bình. Tôi đã cập nhật ví dụ. – HBP

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