00001 /* 00002 * CntmLib - Подсчет ссылок, потоки, синхронизация, асинхронные процедуры, события 00003 * Copyright (c) 2005, Овсеевич Роман, CntmLib@mail.ru 00004 * _______________________________________________________________________________ 00005 * Разрешено свободное использование, копирование, распространение, изменение 00006 * (изменение сведений об авторских правах запрещено). Запрещена продажа и 00007 * включение всей библиотеки или ее частей в другие библиотеки. В сведениях об 00008 * авторских правах на программу (или сведениях о программе, об авторах, 00009 * использованных средствах разработки и т.д.) должна быть указана информация 00010 * о библиотеке CntmLib, ее авторе и, возможно, сайте или email'е. 00011 * Библиотека поставляется "как есть", без каких-либо гарантий со стороны автора. 00012 */ 00013 00014 #ifndef CNTM_OBJECTALLOCATEBUFFER_H 00015 #define CNTM_OBJECTALLOCATEBUFFER_H 00016 00017 namespace Cntm 00018 { 00019 namespace SpecUtils 00020 { 00021 00022 /** 00023 * Класс буфера для выделения места под объект, создаваемый оператором new(void*). 00024 * Используется для устранения барьерного эффекта на некоторых платформах. 00025 * 00026 * Шаблонный класс, параметр шаблона - класс, который будет размещен в буфере. 00027 * 00028 * Класс обеспечивает многопоточность. 00029 * @author Овсеевич Р. 00030 * \ingroup SystemUtils 00031 */ 00032 template <typename T> 00033 class ObjectAllocateBuffer 00034 { 00035 public: 00036 00037 /** 00038 * Указатель на буфер для размещения объекта указанного размера. 00039 */ 00040 const void* Place() const { return place; } 00041 00042 /** 00043 * Указатель на буфер для размещения объекта указанного размера. 00044 */ 00045 void* Place() { return place; } 00046 00047 private: 00048 00049 typedef unsigned FillType; 00050 00051 FillType place[(sizeof(T) + sizeof(FillType) - 1) / sizeof(FillType)]; 00052 }; 00053 00054 } 00055 } 00056 00057 #endif //CNTM_OBJECTALLOCATEBUFFER_H
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |