Я пытаюсь изучить все варианты нового стандарта C ++ 11 в глубине, используя при этом STD :: Async и читая его определение, я заметил 2 вещи, по крайней мере, под Linux с GCC 4.8 .1 :
Это называется async , но он получил действительно «последовательное поведение», в основном в ряду где вы называете будущее , связанное с вашей асинхронной функцией foo , программа блокирует до тех пор, пока не будет выполнено foo .
Это зависит от той же самой внешней библиотеки, что и другие, и лучшие не блокирующие решения, что означает pthread , если вы хотите использовать std :: async , вам нужно pthread .
На данный момент это естественно, чтобы я спрашивал, почему выбирая std :: async даже простым набором функционирования ? Это решение, которое даже вообще не масштабируется, чем больше будущего вы называете, тем менее отзывчивой будет ваша программа.
Я что -то упускаю? Можете ли вы показать пример, которому можно было бы выполнить в асинхронном, не блокирующем, способ?
Я пытаюсь изучить все варианты нового стандарта C ++ 11 в глубине, используя при этом STD :: Async и читая его определение, я заметил 2 вещи, по крайней мере, под Linux с GCC 4.8 .1 : [list] [*] Это называется async , но он получил действительно «последовательное поведение», в основном в ряду где вы называете будущее , связанное с вашей асинхронной функцией foo , программа блокирует до тех пор, пока не будет выполнено foo . [*] Это зависит от той же самой внешней библиотеки, что и другие, и лучшие не блокирующие решения, что означает pthread , если вы хотите использовать std :: async , вам нужно pthread . [/list] На данный момент это естественно, чтобы я спрашивал, почему выбирая std :: async даже простым набором функционирования ? Это решение, которое даже вообще не масштабируется, чем больше будущего вы называете, тем менее отзывчивой будет ваша программа. Я что -то упускаю? Можете ли вы показать пример, которому можно было бы выполнить в асинхронном, не блокирующем, способ?