Tôi đang nghĩ đến việc sử dụng Công nhân Web để cung cấp một số chức năng cơ bản trong khi người dùng đang duyệt trang web của tôi (đó là những gì Công nhân Web đang làm, đúng không?). Tuy nhiên, tôi không muốn mạo hiểm trải nghiệm người dùng bằng cách gây ra tình trạng cuộn lộn xộn, điều khiển không phản hồi, vv Công nhân Web được ánh xạ trên các luồng hệ điều hành, vì vậy tôi mong đợi một số quyền kiểm soát ưu tiên của các luồng này, như tôi biết, không có điều gì trong API hiện tại. Bạn có biết cách thực hiện điều này không? Ngay cả với một hack?Có cách nào để đặt một Web Worker thành ưu tiên thấp không?
Trả lời
Vâng, không có cuộc gọi API nào để kiểm soát các chi tiết cấp thấp như thế này. Tuy nhiên, tôi nghĩ trước tiên bạn nên triển khai những gì bạn muốn làm và sau đó kiểm tra xem hiệu suất truy cập có quá lớn trên trải nghiệm người dùng hay không. Tôi giả định rằng kể từ khi họ không thêm kiểm soát tốt về cách các chủ đề thực hiện, họ có lẽ cũng được quản lý bởi việc thực hiện cơ bản.
Ngay cả khi bị hack? [...] người dùng tải lên một bức ảnh và người lao động áp dụng một giống như Photoshop lọc với nó, mà là khá CPU chuyên sâu, sau đó người lao động cảnh báo thread chính
Dưới đây là một hack.
Làm chậm mã của bạn. Một cái gì đó như thế này là những gì tôi hiện đang sử dụng cho một mô phỏng hạt:
var TIME_STEP = 10,
paused = false,
state; // set by commands.start()
function main_loop() {
if (paused) {
return;
}
// update state incrementally. Break your process into chunks
// for example pixels or rows of pixels
state = ____________;
// send state or progress to main thread
if (finished) {
self.postMessage(state);
} else {
self.postMessage(progress);
}
setTimeout(main_loop, TIME_STEP);
}
var commands = {
//...functions that can be called from main thread (pause/start/cancel/etc)...
};
function message_handler (event) {
var data = event.data;
var command = commands[data.command];
command.apply(this, data.args);
}
self.addEventListener('message', message_handler, false);
TIME_STEP
là thời gian giữa tính toán và sẽ cần phải thể khác nhau tùy theo những gì bạn đang làm và bao lâu bạn có thể đủ khả năng để tăng đó là thời gian. Một điều tốt về việc làm theo cách này là bạn có thể chấp nhận tạm dừng và hủy yêu cầu giữa các lần lặp lại.
- 1. Làm cách nào để khởi chạy quy trình có mức độ ưu tiên thấp? C#
- 2. Có cách nào để đặt mức ưu tiên tải của hình ảnh trên một trang web không?
- 3. Làm cách nào để khởi chạy từ Eclipse với mức độ ưu tiên Thấp trong Windows?
- 4. Cài đặt mức độ ưu tiên (ưu tiên) không có hiệu lực trên Linux
- 5. Tôi có thể đặt Powershell bắt đầu-công việc với ưu tiên thấp?
- 6. Web-Worker với GWT
- 7. I/O ưu tiên thấp trong OS X
- 8. web worker console.log
- 9. Đi qua một Javascript Object Web Worker
- 10. Thư PHP() - Cách đặt mức độ ưu tiên?
- 11. jQuery - đặt ưu tiên xử lý Ajax
- 12. Chủ đề ưu tiên Vs Chủ đề không ưu tiên
- 13. Có cách nào thông minh để đưa ra các thông điệp ưu tiên khác nhau không?
- 14. Có cách nào để đặt mức độ ưu tiên của chuỗi nền được sử dụng bởi một SwingWorker không?
- 15. Có cách nào để một nhiệm vụ được lập lịch biểu win2k8 có IO ưu tiên bình thường không?
- 16. Sự khác nhau giữa một daemon thread và một chủ đề ưu tiên thấp
- 17. Phân tích cú pháp XML trong một Web Worker
- 18. Sử dụng đối tượng chuyển nhượng từ một Worker Web
- 19. phương pháp Tại sao quá tải có ưu tiên thấp hơn so với phương pháp dụ
- 20. Cách đặt Mức độ ưu tiên của IntentService trong Android
- 21. Làm cách nào để đặt ưu tiên cho ánh xạ Spring MVC?
- 22. HTML Web Worker và Jquery Ajax gọi
- 23. Cách ưu tiên công việc?
- 24. Làm cách nào để đặt window.location thành một đường dẫn cụ thể (không có máy chủ)?
- 25. Có cách nào ưu tiên hơn để định dạng các chuỗi jQuery để làm cho chúng dễ đọc hơn không?
- 26. Chạy tác vụ ở chế độ nền với mức ưu tiên CPU thấp hơn
- 27. Sử dụng WebGL từ bên trong một Web Worker: là nó có thể? Làm sao?
- 28. CSS ưu tiên
- 29. Làm thế nào để tăng ưu tiên luồng trong pthreads?
- 30. Có cách nào để đặt phạm vi require_once() một cách rõ ràng thành toàn cục không?
Trên nền tảng và ngôn ngữ nào? – rene
Bạn có ý định sử dụng công việc web nào? Hoạt động định kỳ? Một lần thực hiện một nhiệm vụ? – Tudor
@Tudor Tôi sẽ nói thực hiện một lần (ví dụ: người dùng tải lên ảnh và nhân viên áp dụng bộ lọc giống như Photoshop, đó là CPU khá chuyên sâu, sau đó nhân viên cảnh báo chủ đề chính). – tunnuz