Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Очередь сообщений   Найти похожие ветки 

 
Прямой   (2004-03-31 17:01) [0]

Как увеличить размер виртуальной очереди сообщений для приложения? Можно ли такое?


 
Digitman ©   (2004-03-31 17:18) [1]

это о какой очереди идет речь ? об очереди сообщений, создаваемой для каждого потока системой ? неужто до "дна" добрался ?! ..эт ведь умудриться нужно) ...

если тебе стали малы эти "штаны",  следует немедленно "умерить аппетит", сесть на диету и пересмотреть алгоритмы своей программы - они некорректны, если не сказать не верны ...


 
Прямой   (2004-03-31 18:08) [2]

Аппетиты у меня немерянные по жизни.
Моя прога пишет лог в один файл, данные из многих потоков, которые породило главное окно приложения.
Данные пишутся не так быстро как приходят лог данные.
Данные приходят SendMessagами главному окну с указателем на строку, которая должна быть помещена в лог.
Через часа четыре прога отваливается нафиг. Нигде следов не оставляет. DrWatson курит.


 
Digitman ©   (2004-03-31 18:18) [3]


> данные из многих потоков, которые породило главное окно
> приложения


опа !!! приехали !! оказывается, "окно" порождает "поток" ...

дальше беседовать, кажется, не имеет смысла ...


 
Digitman ©   (2004-03-31 18:22) [4]

я-то, чукча, всю свою сознательную программерскую жисть думал, что кодовый поток в ходе исполнения инструкций создает (порождает, если угодно) окно, и отныне окно принадлежит контексту код.потока  .. но уж никак не наоборот ..

все.. на пенсию пора))


 
Digitman ©   (2004-03-31 18:34) [5]


> Данные приходят SendMessagами главному окну


нахрена ? ну нахрена, спрашивается, "толкать" безразмерную кучу сообщений в очередь далеко не резинового код.потока, которому принадлежит окно ?

крит.секции что, уже отменили, да ? ведь именно они ориентированы на синхронизацию доступа к неразделяемому ресурсу со стороны множества код.потоков, работающих в контексте одного и того же процесса !!


 
Прямой   (2004-03-31 18:35) [6]

Мда, похоже форумом ошибся. Только языком.
Отклячиваюсь от форума нафиг.


 
Digitman ©   (2004-03-31 18:38) [7]

кр.того, если уж приспичило организовать лог именно таким образом, почему не организовать в каждом потоке цикл отправки лог-сообщения ? возможно даже не по Sendmessage, а по SendMessageTimeout ? с проверкой Result"а как условия выхода из цикла ?


 
Digitman ©   (2004-03-31 18:39) [8]


> Прямой


что ж ... если не расположен к диалогу - "отклячивайся" ..

"баба с возу - ..", как говорится


 
Digitman ©   (2004-03-31 18:44) [9]


> размер виртуальной очереди сообщений для приложения


у приложения (точнее - у процесса) - куча таких очередей ..

возможно - по одной на каждый код.поток в контексте процесса
и то не обязательно - система создает очередь сообщений по первому же явному требованию код.потока


 
Slym ©   (2004-04-01 04:35) [10]

Digitman понимаю... ламеры достали? код не привели... начали объясняться с "жопы" (с борьбы со следствиями не ища причин)
Но человек висит в поиске...
Во первых ты делаешь PostMessage!!! (асинхронно) можно ведь синхронно SendMessage!

или делай для потоков разделяемый ресурс!
типа
TLogger=class
pivate
CriticalSection:TCriticalSection;
public
constructor
destructor
procedure LogMessage(str:string);
end

procedure TLogger.LogMessage(str:string);
begin
CriticalSection.Enter;//Синхронизация
WriteFile();
finally
CriticalSection.Leave;
end;
end;

прим:
TThrtead.Create(Logger:TLogger;Suspend:boolean);//сделай reintroduce метода
begin
FLogger:=Logger;
inherited Create(Suspend);
end;

TThrtead.Execute;
begin
while true do
begin
doit
Logger.LogMessage("Im do it!!!")
end;
end;


 
nikkie ©   (2004-04-01 17:42) [11]

Windows 2000: There is a limit of 10,000 posted messages per message queue. This limit should be sufficiently large. If your application exceeds the limit, it should be redesigned to avoid consuming so many system resources. To adjust this limit, modify the following registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERPostMessageLimit.

The minimum acceptable value is 4000.

(MSDN, PostThreadMessage)



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1083177631
killer
2004-04-28 22:40
2004.05.16
Кнопочка в StringGrid


4-1075492917
Xerx
2004-01-30 23:01
2004.05.16
создать виртуальный диск


1-1083274931
VasRog
2004-04-30 01:42
2004.05.16
Файлы


1-1082892200
Makhanev A.S.
2004-04-25 15:23
2004.05.16
ThreadSafe...


1-1083080832
volser
2004-04-27 19:47
2004.05.16
Написание класса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский