F # Асинхронная проблема потока - PullRequest
1 голос
/ 14 июня 2011

Я изучаю F # и очень заинтересован в этом языке

Я пытаюсь создать асинхронное выражение для асинхронного запуска.

например

let prop1=async{ 
    for i=0 to 1000000 do  ()
       MessageBox.Show("Done")
    }

let prop2=async{ 
    for i=0 to 1000000 do  ()
       MessageBox.Show("Done2")
    }

Async.Start(prop1)
Async.Start(prop2)

когда я запускаю программу, я получаю, что происходит увеличение количества потоков процесса программы, с 6 до 8, когда я закрыл окно сообщения 2, процесс, кажется, не уничтожает эти созданные потоки, счет также 8, что произошло или я неправильно понял F # асинхронный

Спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Потоки взяты из пула потоков (поэтому, кстати, потоков больше, чем действий).

Пул существует до тех пор, пока приложение не завершится.

Не о чем беспокоиться

Редактировать Для хорошей углубленной статьи по F #, асинхронному и ThreadPool: http://www.voyce.com/index.php/2011/05/27/fsharp-async-plays-well-with-others/

0 голосов
/ 14 июня 2011

Среда выполнения может использовать пул потоков, то есть потоки не уничтожаются, но ожидают других асинхронных задач.Этот метод помогает среде выполнения сократить время запуска новой асинхронной операции.операция, поскольку создание нового потока может занять некоторое время и ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...