Có sự khác biệt giữa việc chỉ định Scheduler.Default
và không chỉ định lịch biểu. Sử dụng Scheduler.Default
sẽ giới thiệu hành vi không đồng bộ và có thể đồng thời, trong khi không cung cấp bộ lập lịch để nó tùy theo quyết định của nhà điều hành. Một số nhà khai thác sẽ chọn để thực hiện đồng bộ trong khi những người khác sẽ thực thi không đồng bộ, trong khi những người khác sẽ chọn để nhảy chủ đề. Đây có lẽ là một ý tưởng tồi (đối với hiệu suất và thậm chí có thể chính xác vì quá nhiều đồng thời có thể dẫn bạn vào tình huống bế tắc) để cung cấp Scheduler.Default
cho mọi toán tử Rx. Nếu bạn không có yêu cầu lập kế hoạch cụ thể, thì không cung cấp bộ lập lịch và cho phép nhà điều hành chọn những gì cần.
Ví dụ,
này sẽ hoàn thành đồng bộ:
int result = 0;
Observable.Return(42).Subscribe(v => result = v);
result == 42;
trong khi điều này sẽ hoàn thành đồng bộ (và có khả năng trên thread khác):
int result = 0;
Observable.Return(42, Scheduler.Default).Subscribe(v => result = v);
result == 0;
// some time later
result == 42;
Thanks.But gì nếu tôi muốn cung cấp một TestScheduler cho mục đích thử nghiệm? –