
Igor
19.09.2018
11:12:41
Между тредами конечно, а не телами...

Pavel
19.09.2018
11:15:39
А если я буду передавать указатели то GC всегда поймет что где-то лежит указатель и не будет чистить этот объект?

Igor
19.09.2018
11:17:20
Да, почему нет?

Pavel
19.09.2018
11:19:57
Да, всмысле поймет, или не поймет? )

Google

Maxim
19.09.2018
11:21:32
если ты структуру через new сделаешь, всё отлично будет

Pavel
19.09.2018
11:24:28
struct S { string a = "kek"; }
int main(string[] args)
{
auto s = new S();
S* sptr = s;
ptrdiff_t dptr = cast(ptrdiff_t)s;
Насчет первого указателя видимо да, а второй мне кажется он не словит.

Maxim
19.09.2018
11:25:23
подозреваю, он с этой структурой будет обращаться так же, как и с объектом

Igor
19.09.2018
11:37:30
Да в смысле поймет
Пока указатель есть в памяти он его видит

Toha
19.09.2018
11:40:20

Igor
19.09.2018
11:42:26
Есть тонкости когда указатель хранится в неподконтрольной gc памяти

Oleg
19.09.2018
12:07:16

Pavel
19.09.2018
12:08:15
Да логично, а если S* то компилятор знает в каких местах кода следить

Igor
19.09.2018
12:20:51
а точно нужен указатель на структуру для передачи в другой тред? пусть я зануда, но спрошу - а не проще ли передать структуру как значение? или планируется впихнуть в труктуру указатели?

Pavel
19.09.2018
12:30:13
> или планируется впихнуть в труктуру указатели?
Возможно
Но это не должно быть неожиданностью

Google

Pavel
19.09.2018
12:30:42
Что у нас незаметно где то там что-то начало перезаписываться или подтекать, а мы и не заметили

Oleg
19.09.2018
12:31:32

Pavel
19.09.2018
12:31:40
Указателей я пытаюсь избежать всеми силами, в высокоуровневом приложении они ни к чему. Но почему то их нельзя просто так заменить классами со ссылочной семантикой.
Когда код становится сложным и развесистым, спасают ограничения и контролирующие ассерты

Oleg
19.09.2018
12:33:07
типа обрезать инфу для части плагина

Pavel
19.09.2018
12:34:16
Примерно по той же причине в ООП рекомендуется делать все переменные private. И потом по надобности менять на public. Потому что когда уже наросла кодовая база, то менять public -> private гораздо сложнее чем private -> public

Toha
19.09.2018
12:36:33
Там где я работал, все переменные были паблик)
Геттеры? Сеттеры? Штоэта?))

Pavel
19.09.2018
12:37:44
Геттеры в C# лучше сделаны чем в D

Toha
19.09.2018
12:38:15
после пыхи шарповые геттеры кажутся оверинжинирными)

Pavel
19.09.2018
12:38:45
Там можно прямо на переменную навесить Get Set. А тут приходится как минимум создавать переменную-хранилище _foo, а потом к нему прописывать 2 метода и на них вешать @property
Причем эти методы нельзя назвать так же как переменную, получаем 2 символа в таблице класса - _foo и foo, хотя они делают одно и то же.

Toha
19.09.2018
12:41:16
Дак а в шарпе так же
Есть переменная приватная, и ты на нее паблик гет/сет делаешь

Oleg
19.09.2018
12:46:48

Pavel
19.09.2018
12:46:49
Надо что-то типа такого синтаксиса:
class S {
Property!"name"(Property.get | Property.set);
}

Google

Oleg
19.09.2018
12:50:52
но вот вопрос: зачем нужны геттеры и сеттеры в структуре?
если это приватное поле, то это приватное поле

Pavel
19.09.2018
12:51:30
Чтобы readonly свойство сделать например

Oleg
19.09.2018
12:51:31
возможно геттер можно сделать
а вот сеттер простой не пойму зачем
только в классе для работы с мьютексами это удобно

Pavel
19.09.2018
12:52:25
Да много типичных ситуаций, например хочется посчитать количество обращений к переменной
Или запретить чтение из переменной, если объект еще не готов

Oleg
19.09.2018
12:54:01
но в этом случае не получится просто так сделать геттер и сеттер
я про простые геттеры и сеттеры
которые типа автоматически генерируются

Oleg
19.09.2018
12:54:36
если их потом можно переопределить это другое — это опять классы

Pavel
19.09.2018
12:55:56
```
class S {
Property!(string, "name")(Property.get);
string name(string value) {
_name = value;
}
}
```
А вот так переопределять
А шаблон должен смотреть, если у же есть такой метод, то не генерировать для переменной сеттер

Oleg
19.09.2018
12:57:11
но это уже библиотеки

Pavel
19.09.2018
12:58:09
Ну так писать быстрее чем по честному объявить _name и написать для нее геттер еще.

Oleg
19.09.2018
12:58:11
не думаю что это должно быть в синтаксисе

Pavel
19.09.2018
12:59:04
Хехе на форуме есть обсуждение как раз той странной библиотеки с генератором геттеров, там Александреску отписался что идея замечательная и уже чуть ли не DIP пошел сочинять.

Google

Igor
19.09.2018
13:20:22
вот есть описание с птичьего полёта про передачу между тредами и иммутабельность https://bartoszmilewski.com/2013/12/10/functional-data-structures-and-concurrency-in-c/

Dmitry
19.09.2018
14:25:33
Поэтому если записать указатель в локальную числовую переменную, ГЦ его найдет и просканирует.

Pavel
19.09.2018
14:27:40
А если в поле структуры то не найдет? ;)

Ievgenii
19.09.2018
14:27:43

Pavel
19.09.2018
14:28:39

Oleg
19.09.2018
14:28:53

Ievgenii
19.09.2018
14:31:32

Admin
ERROR: S client not available

Ievgenii
19.09.2018
14:31:34
Имхо
Ты же адрес и в пайп можешь записать
И вычитывать его из пайпа спустя только 10 минут
Это твои проблемы! Если хочешь "вечный" или контролируемый срок жизни объекта - конструируй и контролируй его сам

Pavel
19.09.2018
14:33:54

Dmitry
19.09.2018
14:34:20
Пайп имеет смысл между процессами, а там указатели бестолку передавать, у процессов адресные пространства разные.

Toha
19.09.2018
14:35:12
Шаред мемори

Pavel
19.09.2018
14:35:58
омг да причем тут процессы мы не про них вообще

Dmitry
19.09.2018
14:36:08

Google

Pavel
19.09.2018
14:36:58

Dmitry
19.09.2018
14:40:54
Минутка хороших новостей.
D есть в ентерпрайзе.
И работа на нем есть.

Toha
19.09.2018
14:42:15
Это remedy? ?

Dmitry
19.09.2018
14:42:19
Можно весь день писать, за это еще и платят.
Сегодня приходил Robert Schadek
John Colvin, Atila Neves и некоторые другие уже тут
Скоро добрая половина сообщества вместе работать будет )
Секрет успеха - засветиться на форумах dlang.org )
Это та же контора, что symmetry autumn of code финансирует.

Ievgenii
19.09.2018
14:46:44

Oleg
19.09.2018
14:46:48
?

Pavel
19.09.2018
14:47:40

Ievgenii
19.09.2018
14:48:23

Dmitry
19.09.2018
14:48:37
Да, тот же Атила на удаленке, я тоже еще недавно был.
Только не в курсе насчет вакансий прямо сейчас.

Pavel
19.09.2018
14:49:44
И как вы посылаете данные между тредами? )
Не делаете их иммутабельными?

Dmitry
19.09.2018
14:49:58
Самолетами )