🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
3 messages
3 total messages Started by rozrabiak Tue, 20 Apr 2004 12:58
Czy moge tak zrobic?
#980
Author: rozrabiak
Date: Tue, 20 Apr 2004 12:58
22 lines
1168 bytes
Witam

private void przeszukaj()
{
for(int i=0;i<=2342;i++)
{
	if(costam==i)
		break;
watek.Suspend();
}
}

i gdzies tam dalej w kodzie:

watek.Resume();

Gdzie powyzsza procedura uruchamiana jest w "watek".

Moge tak to rozwiazac, czy nie jest to zalecane? Jesli lepiej wystrzegac 
sie takowego rozwiazania, to co polecicie?

pozdrawiam serdecznie, grzesioo.
Re: Czy moge tak zrobic?
#981
Author: Showstoppa
Date: Tue, 20 Apr 2004 19:46
32 lines
1623 bytes
Tue, 20 Apr 2004 14:58:35 +0200, na alt.pl.comp.lang.csharp, rozrabiak
napisał(a):

> Witam
> 
> private void przeszukaj()
> {
> for(int i=0;i<=2342;i++)
> {
> 	if(costam==i)
> 		break;
> watek.Suspend();
> }
> }
> 
> i gdzies tam dalej w kodzie:
> 
> watek.Resume();
> 
> Gdzie powyzsza procedura uruchamiana jest w "watek".
> 
> Moge tak to rozwiazac, czy nie jest to zalecane? Jesli lepiej wystrzegac 
> sie takowego rozwiazania, to co polecicie?
> 
> pozdrawiam serdecznie, grzesioo.

z mojego punktu widzenia jest ok. niedawno sie tym bawilem, niesadze, zeby
to negatywnie wplywalo na prace programu, gdyz jak juz napisano, watek, to
kolejny rownolegly proces, wiec jak sie go "spauzuje" - to chyba nie bedzie
zle. Ale moge sie mylic. Poczekajmy na opinie eksperta :)

pozdrawiam
Re: Czy moge tak zrobic?
#982
Author: Marek Janaszewski USUNTO. z adre...
Date: Tue, 20 Apr 2004 20:28
34 lines
2616 bytes
Showstoppa wrote:
[...]
> z mojego punktu widzenia jest ok. niedawno sie tym bawilem, niesadze,
> zeby to negatywnie wplywalo na prace programu, gdyz jak juz napisano,
> watek, to kolejny rownolegly proces, wiec jak sie go "spauzuje" - to
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[...]

Witam!

Mała uwaga:

W Windows wątek to wątek, a proces to proces. W ramach jednego procesu
działa jeden lub wiele wątków. No chyba, że proces kończy działanie i przez
chwile nic tam nie działa. Pewnie taki stan także występuje. Wątki działają
we wspólnej przestrzeni adresowej, to jest procesu. Procesy natomiast mają
osobną przestrzeń adresową i pamięć wirtualną. Bezpośrednie odwołanie do
pamięci innego procesu ze względu na tryb chroniony procesora nie jest
możliwe. Po pierwsze kończy się Access Violation, podobnie jak użycie
wskaźnika bez sensu. Po drugie jest to przestrzeń wirtualna, czyli nie znamy
fizycznych adresów w pamięci. Co więcej adres może aktualnie wskazywać na
pamięć w pliku wymiany. Zatem przekazanie wskaźnika do innego procesu nie ma
sensu, bo oznacza ona fizycznie inną lub nieprzydzieloną pamięć. Natomiast
wewnątrz procesów to jest wolna amerykanka, nie ma takich ograniczeń jeśli
chodzi o wątki. Za to na programiście i bibliotekach spoczywa synchronizacja
tych wszystkich wątków aby nie wchodziły sobie w paradę. Czyli działy
jednocześnie na tych samych zasobach jak pamięć, grafika, jakieś obiekty,
itd. Jeśli by nie było takiej synchronizacji to program działa by w sposób
nie zdeterminowany. A właściwie nie działa by wcale.

-- 
Pozdrawiam,
Marek Janaszewski
[ j_m...@gazeta.pl ]
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads