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?
Author: rozrabiak
Date: Tue, 20 Apr 2004 12:58
Date: Tue, 20 Apr 2004 12:58
22 lines
1168 bytes
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?
Author: Showstoppa
Date: Tue, 20 Apr 2004 19:46
Date: Tue, 20 Apr 2004 19:46
32 lines
1623 bytes
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?
Author: Marek Janaszewski USUNTO. z adre...
Date: Tue, 20 Apr 2004 20:28
Date: Tue, 20 Apr 2004 20:28
34 lines
2616 bytes
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