Re: RAII, scope(exit) ...;
От: remark Россия http://www.1024cores.net/
Дата: 18.08.10 21:58
Оценка: 38 (1)
Здравствуйте, c-smile, Вы писали:

struct context 
{
  static thread_local CTX* ctx;
  context(CTX& c)
  {
    assert(ctx == 0);
    ctx = &c;
    enter(&c);
  }
  ~context()
  {
    assert(ctx != 0);
    leave(ctx);
    ctx = 0;
  }
};



Правда по поводу стека всё равно спорно, т.к. для объектов с деструкторами компилятор обычно заводит на стеке вспомогательную переменную через которую отслеживает какие объекты были сконструированы, а какие — нет (что бы знать для каких звать деструкторы, а для каких нет). Я думаю, это в равной мере относится и к D.
Но если не используются исключения, или уже есть другие объекты с деструкторами, то это не должно влиять.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.