> Mi a helyzet a Pipe-okkal? Mi a helyzet a Socket-ekkel? Ezeket is vegig lehet
pr
> obalgatni, ha van ra idod, szerintem mindketto olyan (kulonosen a socket), ho
gy
> ha a program terminal, azonnal megszunik (ezt mindenki tapasztalhatta mar, a
ki
> irt vmilyen halozati szervert).
*Lehet, nem probaltam. De szvsz nem szep dolog, hogy *rabizod az oprendszerre a
z
*eroforrasok felszabaditasat.
Amennyiben az eroforrasok teljes mertekben felszabadulnak, akkor miert ne? Nyil
van ezzel az a baj, hogy az ember sosem lehet ebben biztos (plane Windows-n
nal...)
*lasd meg a level veget.
> Egy szonak is szaz a vege: mindegyiknek van vmi baja ;-]
*ezert mondtam en a BroadcastMessageEx-et. Ez az altalad *definialt uzenetet
*elkuldi minden processznek. Mivel te definialtad *egyedileg tudsz olyat csinal
ni,
*hogy csak az altalad irt programok reagaljanak *megfeleloen.
*Ez a megoldas fuggetlen mindentol, nem foglal egyeb *eroforasokat, nincs mit
*felszabaditani. Egyetlen hibaja, hogy ha a processzed *nagyon el van foglalva
*akkor nem fog reagalni. Viszont az eroforrasigenylo *muveleteket illik masik
*szalba tenni. Ez alapelv. Tehat megiscsak jo a megoldas.
Igen, a kulon szalat en is irtam. A te megoldasodnak az a bibije, hogy ha a pro
gramnak nincs ablaka, vagy nem fersz hozza az uzenetfeldolgozo reszehez (peldau
l egy konzolos applikacional), akkor nem jo. Persze ez esetleg korulprogramozha
to, de akkor mar enszerintem egyszerubb az altalam javasolt megoldas.
*itt a level vege.
nos, nem tudom miert hittem nektek, es nem probaltam eddig sajat magam, de most
megtettem. Kapaszkodjon meg mindenki, aki a temaban erintett: a Mutex is megse
mmisul, ha terminalod a processzt! Kicsit utanaolvastam az MSDN-ben, meg a polc
rol is levettem az "Advanced Windows" cimu konyvet, ebbol idezek (kiemelesek to
lem):
"What happens when a process terminates:
...
2. All the User and GDI objects allocated by the process are freed, and _all th
e kernel objects are closed._"
A memory leak-rol ezt irja:
"Let's say that you forget to call CloseHandle - will there be a memory leak? W
ell, yes and no. It is possible for a process to leak resources (such as kernel
objects) _while the process runs._ However, when the process is terminated, th
e operating system _ensures_ that any and all resources used by the process are
freed - _this is guaranteed._"
Aztan tovabb:
"For kernel objects, the system performs the following: When your process termi
nates, the system automatically scans the process's handle table. If the table
has any valid entries (objects that you did not close before terminating), the
system closes these object handles for you. If the usage count of any of these
objects goes to zero, the kernel destroys the object."
Magyarul: minden kernel object-hez (hogy mondjak ezt magyarul?) nyilvan van tar
tva a ra hivatkozo handle-k listaja. Ha nulla hivatkozo handle letezik, akkor a
z object megsemmisul, legkesobb akkor, amikor a legutolso hivatkozo processz te
rminal.
Tomoren osszefoglalva:
a win32 programhoz ezt a ket sort hozzaadva:
HANDLE hMutex = CreateMutex (NULL, FALSE, "azenkismutexem");
DWORD e = GetLastError ();
az "e" valtozo erteke fogja megmutatni, hogy fut-e mar a program, vagy sem. Ha
e==0, akkor nem fut, ha e==183 (ERROR_ALREADY_EXISTS), akkor igen.
Ha az is kell, hogy hany peldanyban fut, akkor ahhoz mar FileMapping kell, ez e
setben a kodsorok szama osszehasonlithato nagysagrendu lesz a "BroadcastSystemM
essage" fuggvenyt hasznalo megoldas kodjaval.
Remelem, sikerult alaposan alatamasztani a velemenyemet.
udv,
medve
(webes bekuldes, a bekuldo gepe: 212.105.227.100)
|
At 02:32 2002.11.22._ +0100, you wrote:
>Hello,
>segitseget szeretnek kerni egy labirintust megoldo algoritmus megirasaban.
>(bejarattol eljutni a kozepere). legrovidebb ut, leggyorsabb ut(tobb megoldas
>eseten), minel kevesebb kanyargas, stb.
felveszel egy 2D-s matrixot, abban 0 ami folyoso, -1 ami fal.
Aztan a kijarati 0-at lecsereled 1-re. Aztan az osszes 1 melleti 0-at 2-re
aztan az osszes 2 melletti 0-at 3-ra.
Ezt addig, amig el nem jutsz a bejaratig.
Aztan elindulsz onnan es keresed a szomszedos egyel kisebb szamot. Ez a
legrovidebb.
A kanyargasra talaljon ki valaki valami mast.
Haho
Laca
|