Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 24.08.2011, 18:17   #21
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от GoodDrone Посмотреть сообщение
Есть таймаут, правда глобальный.
впервые слышу что у секции есть таймаут.
у мутекса есть задаваемый вручную от 0 до INFINITE
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 24.08.2011, 19:02   #22
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

mira, у TryEnterCriticalSection можно задать таймаут, после которого если так и не удалось войти в секцию, то TryEnterCriticalSection завершается возвращая соответствующий код результата. Собсно даже не можно а нужно, и так же от 0 до INFINITE
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 24.08.2011, 19:21   #23
Заблокирован
 
Регистрация: 25.03.2011
Сообщений: 18
Сказал Спасибо: 5
Имеет 4 спасибок в 3 сообщенях
GoodDrone пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
mira, у TryEnterCriticalSection можно задать таймаут...
Где?

Цитата:
Сообщение от mira Посмотреть сообщение
впервые слышу что у секции есть таймаут.
Я нашел только глобальный:

Цитата:
The timeout interval is specified by the following registry value: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Session Manager\CriticalSectionTimeout.
GoodDrone вне форума   Ответить с цитированием
Старый 24.08.2011, 19:30   #24
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

GoodDrone, хм, да, чтот я гоню, нет у них таймаута при TryEnterCriticalSection, с чем то его перепутал видать
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 24.08.2011, 19:47   #25
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

трайэнтер мы причислили к извращениям вроде
поэтому InitializeCriticalSectionAndSpinCount не считаетса
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 24.08.2011, 23:39   #26
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Ссама переменная крит секции имеет несколько полей, что они означают? Может быть для поиска конфликтов можно их проверять?

Вот как объявлена эта запись в Delphi:

_RTL_CRITICAL_SECTION = record
DebugInfo: PRTLCriticalSectionDebug;
LockCount: Longint;
RecursionCount: Longint;
OwningThread: THandle;
LockSemaphore: THandle;
Reserved: DWORD;
end;
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)

Последний раз редактировалось Yegor, 24.08.2011 в 23:42.
Yegor вне форума   Ответить с цитированием
Старый 25.08.2011, 00:56   #27
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Yegor Посмотреть сообщение
Ссама переменная крит секции имеет несколько полей, что они означают? Может быть для поиска конфликтов можно их проверять?

Вот как объявлена эта запись в Delphi:

_RTL_CRITICAL_SECTION = record
DebugInfo: PRTLCriticalSectionDebug;
LockCount: Longint;
RecursionCount: Longint;
OwningThread: THandle;
LockSemaphore: THandle;
Reserved: DWORD;
end;
ненадо там ниче проверять. опиратса на эти поля крайне не рекомендуетса (как и на саму структуру). кроме как большего гемора не получиш.
LockCount - это типа счетчик запираний (у секции поидеи 0 или 1)
OwningThread - ид потока вошедшего в секцию
LockSemaphore - помоему для случая какраз с трайэнтером (иначе не используетса)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
За это сообщение mira нажился спасибкой от:
Старый 25.08.2011, 01:18   #28
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от mira Посмотреть сообщение
LockCount - это типа счетчик запираний (у секции поидеи 0 или 1)
а мне кажется это для счётчика потоков ожидающих входа в секцию

Добавлено через 7 минут
а хотя...
Цитата:
Сообщение от msdn
The most important fields of the critical section structure are as follows:
  • In Microsoft Windows 2000, and Windows XP, the LockCount field indicates the number of times that any thread has called the EnterCriticalSection routine for this critical section, minus one. This field starts at -1 for an unlocked critical section. Each call of EnterCriticalSection increments this value; each call of LeaveCriticalSection decrements it. For example, if LockCount is 5, this critical section is locked, one thread has acquired it, and five additional threads are waiting for this lock.
  • The RecursionCount field indicates the number of times that the owning thread has called EnterCriticalSection for this critical section.
  • The EntryCount field indicates the number of times that a thread other than the owning thread has called EnterCriticalSection for this critical section.
When the first thread calls the EnterCriticalSection routine, the critical section's LockCount, RecursionCount, EntryCount and ContentionCount fields are all incremented by one, and OwningThread becomes the thread ID of the caller. EntryCount and ContentionCount are never decremented.
At this point, four different things can happen.
  1. The owning thread calls EnterCriticalSection again. This will increment LockCount and RecursionCount. EntryCount is not incremented.
  2. A different thread calls EnterCriticalSection. This will increment LockCount and EntryCount. RecursionCount is not incremented.
  3. The owning thread calls LeaveCriticalSection. This will decrement LockCount (to -1) and RecursionCount (to 0), and will reset OwningThread to 0.
  4. Another thread calls LeaveCriticalSection. This produces the same results as the owning thread calling LeaveCriticalSection -- it will decrement LockCount (to -1) and RecursionCount (to 0), and will reset OwningThread to 0.
When any thread calls LeaveCriticalSection, Windows decrements LockCount and RecursionCount. This feature has both good and bad aspects. It allows a device driver to enter a critical section on one thread and leave the critical section on another thread. However, it also makes it possible to accidentally call LeaveCriticalSection on the wrong thread, or to call LeaveCriticalSection too many times and cause LockCount to reach values lower than -1. This corrupts the critical section and causes all threads to wait indefinitely on the critical section.
__________________
Я здесь практически не появляюсь!, Skype - ikskor

Последний раз редактировалось xkor, 25.08.2011 в 01:19. Причина: Добавлено сообщение
xkor вне форума   Ответить с цитированием
Старый 25.08.2011, 01:25   #29
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Да вот только как читать эти данные из рекорда крит секции. Вдруг они в этот момент обновляются.
__________________
Продажа чистых аккаунтов 4G, L2 EU, AARu, AA EU, Aion EU, Tera RU, Tera EU (ICQ 594297609)
Продажа VK авторег аккаунтов (ICQ 594297609)
Yegor вне форума   Ответить с цитированием
Старый 25.08.2011, 02:16   #30
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

Цитата:
Сообщение от Yegor Посмотреть сообщение
Да вот только как читать эти данные из рекорда крит секции. Вдруг они в этот момент обновляются.
завернуть еще в 1 крит секцию

а вообще ты слишком злопотребляеш многопоточкой, поток стоит создавать тогда когда есть острая необходимость. тут я ее невижу совсем
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:37.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!