Здравствуйте, VladD2, Вы писали:
WH>>А region inference ты как будешь делать не имея полной информации о потоках?
VD>Какая еще нужна информация о потоках?
Вся.
Допустим имеем вот такой код:
spawn запускает код в новом потоке и возвращает future
1)
def someFn() : void
{
def str = readString();
def foo()
{
str.length;
}
print(foo());
}
2)
def someFn() : void
{
def str = readString();
def foo()
{
str.length;
}
_ = spawn(foo());
}
3)
def someFn() : void
{
def str = readString();
def foo()
{
str.length;
}
def value = spawn(foo());
print(value.get);
}
В первом и третьем случае строку можно разместить в стеке или в куче привязанной к функции someFn. Как это другой вопрос.
Во втором нельзя ибо мы можем выйти за приделы функции до того как свеже созданный поток будет завершон.
Болие того во втором случае можно вобще выкинуть запуск потока ибо никаких эффектов он не производит. А третий свести к первому ибо запуск потока даже если их очень сильно облегчить всеравно сильно дороже чем исполняемый код.
... << RSDN@Home 1.2.0 alpha rev. 673>>