
Andrey
13.09.2017
11:58:30
зачем?

Dmitry
13.09.2017
12:00:16
просто в книге у Али по это есть, "std.concurrency.Generator for presenting fibers as ranges" и я не совсем понимаю реальный кейс.
типа чтобы приостановить итерирование, провести обработку и потом дальше пойти?

Andrey
13.09.2017
12:05:22
можно сделать генератор на файбере и обернуть его в Range.
Тогда front возвращает запомненый результат. popFront вызывает файбер.

Google

Oleg
13.09.2017
12:08:07
Вроде было что-то в std

Pavel
13.09.2017
12:12:26
возможно это что-то в методе parallel() реализовано?
Там как-то эти файберы по тредам размазываются

Andrey
13.09.2017
12:24:47
я про Range

Dmitry
13.09.2017
12:30:10
https://dlang.org/phobos/std_concurrency.html#.Generator

Dmitry
13.09.2017
13:00:30
вопрос. Вот в следующем коде же если мы будем нажимать Enter то он не завершится т.к. будет отработан скан-код Энтера верно?
while((line = readln()) !is null)

Andrey
13.09.2017
13:05:18
в доках не написано что нулевой указатель будет, думаю может вернуть пустую строку с ненулевым указателем
хотя в примере такой код есть
а, там проверка для конца файла

Dmitry
13.09.2017
13:24:14
А что может быть у меня опять все разом померло:
root@debian:~# systemctl status nginx.service
Failed to get properties: Connection timed out

Andrey
13.09.2017
13:27:24
https://github.com/vibe-d/vibe.d/blob/2442f1f6dbd01a3d46a126c6e1017ab1660043a1/core/vibe/core/drivers/libevent2.d#L375

Google

Dmitry
13.09.2017
13:28:30
nginx тоже помер
блин, я забыл, а как заранее выделить для структуры место, чтобы лишних аллокаций избежать.

Maxim
14.09.2017
06:54:51
она же на стеке делается

Dmitry
14.09.2017
06:55:35
массив структур если создавать
и туда данные кстать

Maxim
14.09.2017
06:55:59
length массиву задай
ну или через auto a = new Foo[10];

Dmitry
14.09.2017
06:56:55
кстати, а в чем разница если мы структуру через new создадим? Ведь как понимаю ее имя и так и сяк будет на стеке

Maxim
14.09.2017
06:57:17
а структуру разве можно через new создать?

Dmitry
14.09.2017
06:57:27
сейчас проверю

Maxim
14.09.2017
06:59:16
хм, дает, но получается что-то странное)

Dmitry
14.09.2017
06:59:42
struct MyStruct
{
int age;
string name;
}
Вопрос что в данном случае на стек попадет?
Указатель на структуру на стек, а переменные структуры куда? В кучу?

NullSanya
14.09.2017
07:00:19

Maxim
14.09.2017
07:00:22
да

Dmitry
14.09.2017
07:00:47
А переменные исключительно в кучу? Если я их как static помечу то тоже в кучу?
Как вообще понять где что лежит? Можно это проверить?

Maxim
14.09.2017
07:02:15
наверное, гарантированно проверить можно только, если дизассемблировать и посмотреть, что происходит)

Dmitry
14.09.2017
07:02:57
через new у меня не получилось создать

Maxim
14.09.2017
07:03:16
а что говорит?

Dmitry
14.09.2017
07:04:03
Error: cannot implicitly convert expression new MyStruct(0, null) of type MyStruct* to MyStruct

Google

Maxim
14.09.2017
07:04:22
переменную объяви через auto
ну или MyStruct*
ну и потом при использовании разыменовывать надо будет

Andrey
14.09.2017
07:05:22
new возвращает указатель на объект в куче

NullSanya
14.09.2017
07:05:33

Dmitry
14.09.2017
07:05:56
через auto работает

NullSanya
14.09.2017
07:05:59
разыменование только надо будет при присвивании

Maxim
14.09.2017
07:06:03
как минимум при writeln(ololo); надо будет)

NullSanya
14.09.2017
07:06:34
а при работе с полями - нет

Dmitry
14.09.2017
07:07:07
у структуры .length есть? или как там размер задать?
void main()
{
MyStruct ms;
}
struct MyStruct
{
int age;
string name;
}

NullSanya
14.09.2017
07:08:34

Dmitry
14.09.2017
07:08:50
ну типа чтобы была выделена память заранее, чтобы аллокаций не было

NullSanya
14.09.2017
07:09:08
На массив?

Maxim
14.09.2017
07:09:25
у структуры length нету, у нее только sizeof)

Dmitry
14.09.2017
07:09:32
я планирую создать массив структур. нужно чтобы была выделена память чтобы снизить количество аллокаций
@deviator мне в свое время показывал, но я забыл как

Maxim
14.09.2017
07:10:24
auto arr = new MyStruct[480];

Dmitry
14.09.2017
07:10:40
а если без new то никак?

Google

NullSanya
14.09.2017
07:10:57

Maxim
14.09.2017
07:11:05
MyStruct[] arr; arr.length = 480;
конструкции равносильные)

Dmitry
14.09.2017
07:11:32
MyStruct[400] ms;
это типа 400 байт выделено под нее?

Maxim
14.09.2017
07:12:08
400 элементов массива размером MyStruct.sizeof

NullSanya
14.09.2017
07:12:20

Maxim
14.09.2017
07:13:00
но нужно иметь в виду, что это статический массив)

Admin
ERROR: S client not available

Maxim
14.09.2017
07:13:07
его размер не может меняться

Dmitry
14.09.2017
07:13:15
struct MyStruct
{
int age;
string name; // а какого размера структура будет если string то у нас может быть очень большй
}

NullSanya
14.09.2017
07:13:27

Dmitry
14.09.2017
07:13:37
а int age?

NullSanya
14.09.2017
07:13:45

Dmitry
14.09.2017
07:14:11
все что не статический размер\массив это будет ссылкой?

Maxim
14.09.2017
07:14:14
string это не алиас ли для immutable(char)[] ?

NullSanya
14.09.2017
07:14:54
остальное ссылка

Dmitry
14.09.2017
07:15:54
по значению т.е. они будут лежать в стеке, а по ссылке это когда в стеке будет лежать только указатель на то где они в куче лежат?

Google

NullSanya
14.09.2017
07:16:35

Dmitry
14.09.2017
07:18:08
это понятно, но как я понимаю в стеке может лежать или значение или ссылка на значение? Все других вариантов быть не может?

Maxim
14.09.2017
07:18:31
да)
в D кроме значения и ссылки на значение больше ничего и нет)

NullSanya
14.09.2017
07:18:53
вот-вот

Dmitry
14.09.2017
07:20:14
А можно как-то принудительно сделать так, чтобы int клался в кучу? А в стеке была лишь ссылка?

Maxim
14.09.2017
07:20:30
а зачем?
он тогда в два раза больше места будет занимать

Dmitry
14.09.2017
07:21:18
Просто чтобы понять. К примеру у меня в структуре будет 100 тыс int. Пока просто теоретический вопрос.

Maxim
14.09.2017
07:22:14
auto i = new int; *i = 400;

NullSanya
14.09.2017
07:22:19
ссылка на х64 больше инт по размеру =)

Dmitry
14.09.2017
07:22:55
а в стеке есть фрагментация?

Maxim
14.09.2017
07:23:05
кстати, да, на x64 в два с половиной раза больше будет)

Dmitry
14.09.2017
07:23:37
Я праивльно понимаю, что вся суть программ в том, что они бегают по стеку куда кладется адрес возврата функций и данные\ссылки на данные

Maxim
14.09.2017
07:23:40

Dmitry
14.09.2017
07:24:02
а если мы какие-то данные оттуда удбрали? У структур же есть деструктор

Maxim
14.09.2017
07:24:36
деструктор структур вызывается, когда структура выходит из области видимости
в этот же момент сама структура «исчезает» и становится недоступна

Dmitry
14.09.2017
07:26:44

NullSanya
14.09.2017
07:27:09