2016-01-17 1 views
6

Как D управляет владением объектами? Например мне нужно выразить следующее:Слабые ссылки или указатели

1.) Allocate an object 
2.) Give out references/pointers 
3.) If the initially allocated object is deleted, 
    all references/pointers should become inaccessible. 

В C++ это возможно с std::shared_ptr + std::weak_ptr. Возможно ли это и в D?

+0

См. Https://dlang.org/spec/garbage.html, чтобы лучше понять, как вы можете контролировать время жизни объектов. –

+0

@key_ Вы уверены, что разместили правильную ссылку? Я не могу найти ничего, связанного с управлением временем жизни. –

+0

Вы захотите реализовать запечатанную ссылку, а затем укажете указатели на указатели, когда вы отпустите ее. Эти указатели захотят узнать о своей собственной жизни, чтобы удалить себя из списка ... есть много накладных расходов. Слабые ссылки сами по себе легки - просто создайте указатель, который GC не сканирует, или не увеличивайте ваш refcount, но недействительным, когда объект удален, сложнее. –

ответ

2

На данный момент нет хорошей реализации слабых ссылок в D.

Пожалуйста, проверьте эти темы два форума:

Неправильные или «почти "правильные варианты осуществления:

Самая большая проблема заключается в том, что вам нужен хороший API вокруг слабых ссылок. У Java и .NET есть это, и это возможно BAD. По уважительной причине - трудно придумать хороший апи!

+1

Ненавижу, что в этом форуме так много тем форума D имеют знаки доллара в URL. Ба, он ломает много детекторов. –

 Смежные вопросы

  • Нет связанных вопросов^_^