Я полностью смущен тем, что я только что прочитал на этих двух страницах:
http://www.scsifaq.org/scsifaq.html#_Hlk410546176 http://www.cse.scu.edu/~tschwarz/coen180/LN/scsi.html
Оба утверждают, что асинхронный ввод-вывод SCSI медленнее, чем синхронный. Как так? Зачем кому-то писать асинхронную процедуру только для потери производительности?
Это противоречит моим ожиданиям!
Тем более, что в случае SSD я использую libaio для асинхронного чтения, чтобы получить гораздо лучшую производительность.
Кроме того, первый список синхронен как отправка отправка отправка ожидание ожидание ожидания ... Это именно то, что асинхронный в случае libaio.
Кто-нибудь может пролить свет на это для меня, пожалуйста ?!
Редактировать 1
Позвольте мне прояснить мою проблему. У меня может быть проблема с правильным пониманием разницы между асинхронным и синхронным вводом-выводом.
- Синхронный: он ожидает завершения каждой операции
- Асинхронный: он никогда не ждет завершения каждой операции
Теперь я хотел бы предположить, что если бы мне пришлось читать последовательно несколько гигабайт данных, читая их в простом синхронном цикле:
while ( num_blocks-- > 0 )
read_block() ;
Будет иметь тип «запрос, пауза, запрос». Практически я вижу, что если я изменю это на многопоточную процедуру, охватив несколько (6-8) потоков, которые возьмут «следующее место для чтения» и затем запросят его, я смогу получить почти максимальную производительность чтения.
Что-то вроде этого:
struct request
{
...
boost::mutex mutex ;
uint64_t block ;
uint64_t get_block_location()
{
boost::mutex::scoped_lock lock( mutex ) ;
return block++ ;
}
} ;
void readth( request* r )
{
try
{
for( ;; )
{
read_block( r->get_block_location()) ;
}
}
catch( const FinishedException& )
{}
}
Я подумал, и теперь, думаю, я начинаю понимать это после переосмысления того, что я только что прочитал, с помощью @Robert Harvey, что асинхронизация / синхронизация - это всего лишь вопрос «экономии времени» при ожидании результата ...
Я оставляю этот вопрос на тот случай, если у кого-то возникнут когнитивные проблемы, как у меня!