Tôi có một máy chủ web và có một công việc định kỳ sáp nhập và gửi các bản ghi (nhiều nhật ký yêu cầu).Chính xác thì điều gì sẽ xảy ra khi gọi phương thức async mà không phải chờ từ khóa?
Task.Run(() =>
{
while (true)
{
try
{
MergeAndPutRecords();
}
catch (Exception ex)
{
Logger.Error(ex);
}
}
});
Trong chức năng MergeAndPutRecords
, có các bản ghi hợp nhất mã và chức năng async trả về Bản ghi gửi tác vụ. (Actaully đó là Amazon Kinesis Firehose's PutRecordBatchAsync.)
Sau đó, điều gì sẽ xảy ra nếu tôi gọi chức năng đó mà không phải chờ từ khóa? Có chức năng chạy trên thread tách ra? Here says it is not. Sau đó, những gì đang trở về Task Means? Here nói phương pháp async mà không cần chờ đợi từ khóa có nghĩa
- Bắt đầu phương pháp đồng bộ trên thread hiện hành. Bỏ qua tất cả các kết quả (bao gồm cả ngoại lệ).
Sau đó, công việc định kỳ và PutRecordBatchAsync của tôi được xử lý đồng thời? Tôi biết asynchronouse và đồng thời là khác nhau. Nhưng không có từ khóa chờ đợi và chúng nằm trong cùng một chuỗi. Cái nào sẽ được thực hiện trước? Tôi đang bối rối ...
Sẽ có các bản ghi lớn cần được hợp nhất và gửi trong thời gian thực. Vì vậy, tôi nghĩ rằng nó phải được thực hiện đồng thời ..
Từ khoá 'async' không tự làm bất kỳ điều gì. Mỗi 'await' được kết hợp thành một 'AsyncStateMachine' có thể xử lý các công cụ không đồng bộ. Nếu bạn không có từ khóa 'await' bên trong phương thức' async' thì không có lý do gì để tạo ra 'AsyncStateMachine', vì vậy bạn sẽ có được phương thức đồng bộ. – FCin
'await' được sử dụng để * chờ kết quả đến *. Nó không, trong bất kỳ cách nào, kiểm soát * làm thế nào quá trình để có được kết quả là ** bắt đầu *** hoặc làm thế nào quá trình liên tục để có được kết quả là làm việc. –