Это смутило меня. Все еще не уверен, что я обращаюсь с этим правильно. Запустите \h grant
для синтаксиса в psql. Вот как мне удалось заставить других моих пользователей и группы работать так, как мне нужно:
GRANT ALL PRIVILEGES ON SCHEMA foo TO GROUP bar;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO GROUP bar;
Если вы внимательно прочитаете документацию для IntializeCriticalSectionWithSpinCount () , станет ясно, что каждая критическая секция поддерживается объектом Event, хотя API для критических секций рассматривает их как непрозрачные структуры. Кроме того, комментарий «Windows 2000» к параметру dwSpinCount указывает, что объект события «выделяется по запросу».
Я не знаю какой-либо документации, в которой говорится, какие условия удовлетворяют «по запросу», но я подозреваю, что это не создается, пока поток не блокируется при входе в критическую секцию. Для критических секций с подсчетом спинов это может не произойти до тех пор, пока время ожидания спина не будет исчерпано.
С эмпирической точки зрения я работал над приложением, которое, как мне известно, создало не менее 60 000 живых COM-объектов, каждый из которых синхронизируется со своим собственным CRITICAL_SECTION. Я никогда не видел ошибок, свидетельствовавших о том, что я исчерпал запас объектов ядра.
Нет ограничений на количество CRITICAL_SECTION
структур , которые вы можете объявить - они просто структуры данных POD на самом низком уровне. Может быть некоторое ограничение на количество, которое вы можете инициализировать с помощью InitializeCriticalSection ()
. Согласно документации, это может вызвать исключение STATUS_NO_MEMORY
в Windows 2000 / XP / Server 2003, но, очевидно, это гарантированно будет успешным в Vista. Они не занимают никаких ресурсов ядра до тех пор, пока вы их не инициализируете (если они вообще потребуют).
Если вы обнаружите, что возникает исключение STATUS_NO_MEMORY
, вы можете попробовать инициализировать только CRITICAL_SECTION
для данного объекта, если есть шанс, что он может быть использован в нескольких потоках.
Большинство типов дескрипторов / ресурсов в Windows ограничены памятью или maxint, что бы ни было первым. (Теоретически на 64-битном maxint может случиться, я полагаю.)
Иногда унылые тексты, которые вы найдете на эту тему, обычно актуальны только для Win9x, у которой были некоторые ограничения. (Всего 64k объектов ядра)