Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Porovnání systémů Linux a FreeBSD (15)

fru_fru
fru_fru (neregistrovaný)
11. 3. 2004 7:44 Nový

WaitForMultipleObjec ts pro sockety

celé vlákno

jsem zacacinajici programator na MS-Win. zrovna nedavno jsem overlapped API pouzil. pro sokety se da pouzit funkce WaitForMultipleObjects() pokud pro dany soket vytvorim Event funkci WSACreateEvent() a tuto event se socketem svazu funkci WSAEventSelect()

jiri
jiri (neregistrovaný)
11. 3. 2004 11:13 Nový

Re: WaitForMultipleObjec ts pro sockety

celé vlákno

Nemusite pouzivat WSAEventSelect - to je tam jen pro neblokujici sockety misto select. Pro blokujici sokety muzete klidne ReadFile/WriteFile/Ex s nenulovym lpOverlapped nebo WSARecv/WSASend s timtez. (viz msdn.microsoft.com)

Mikuláš Patočka
Mikuláš Patočka (neregistrovaný)
12. 3. 2004 1:03 Nový

Re: WaitForMultipleObjec ts pro sockety

celé vlákno

Aha --- já jsem zkusil na socketu dělat IO pomocí read a write a to nefungovalo. Pomocí Read/WriteFile(Ex) to skutečně jde (píšou to v dokumentaci).

MaD
MaD (neregistrovaný)
11. 3. 2004 8:36 Nový

Ještš k NT

celé vlákno

Pomocí struktury OVERLAPPED se dá zajistit i rozpoznání víc achynchronních IO od sebe - s každým IO svážeme jednu událost (prvek hEvent) a pak čekáme přes WaitForMultipleObjects.

Clock
Clock (neregistrovaný)
11. 3. 2004 9:06 Nový

Asyns + sync IO

celé vlákno

Jak se udělá když člověk chce čekat na to, až se buď objeví znak na stdin, nebo se dokončí nějaký asynchronní read nebo write do souboru?

x
x (neregistrovaný)
11. 3. 2004 10:15 Nový

Re: Asyns + sync IO

celé vlákno

Pokud to myslis pro NT, tak:

1. GetStdHandle pro stdin
2. udelat overlapped read na R/W co chces
3. WaitForMultipleObjects - pro [1] a [2]

Na [1] se daji aplikovat veskere wait funknce a prejdou do signalizovaneho stavu, jeslize se na vstupu objevy nova data...

Ms/Win moc rad nemam, ale zrovna co se tyce synchonizace, jim *nix v drtive vetsine pripadu nesaha ani po paty, bohuzel :( Pokud clovek nekde potrebuje trochu vyssi uroven synchonizace a nedejbuh vice atomickych operaci (ala SignalObjectAndWait, ...) tak .... si rovnou muze napsat kompletne vlastni sync, aby to bylo jaks-taks porable a fungovalo dle predstav :(

nautiluZ
nautiluZ (neregistrovaný)
11. 3. 2004 20:07 Nový

Re: Asyns + sync IO

celé vlákno

ad synchronizace ve Widlich:
nejak pozapominate na bezpecnost a stabilitu, tyto funkce nevlastni ani jedno...

V Linuxu je jiz od verze 2.4.cosi implementovano pomerne slusne AIO (patch).

Vite ja jsem clovek ryze prakticky...
proto mi prosim vysvetlete jaktoze i kdyz Widle maji tak skvele implementovany asynchroni rezim jsou tak neuveritelne pomale (ve srovnani s Linuxem)

Marek Paška
Marek Paška (neregistrovaný)
11. 3. 2004 21:29 Nový

Re: Asyns + sync IO

celé vlákno

Neuvěřitelně pomalé? Nevím, o kolik procent je Linux rychlejší a ne, že bych nějak miloval M$, ale na Windows NT 5.0 mi nikdo šahat nebude!-)

A jak je to s tou bezpečností a stabilitou u AIO by mě taky zajímalo. Myslíte, že takhle sestřelíte eNTýčka?

Já osobně považuju asychnonní IO za prasárnu a použil bych to jen po dotlačení okolnostmi. To raději budu důsledně používat vlákna (tedy na systémech, kde se "vlákna" nedělají přes odpudivé fork:-)

A ještě jeden detail. Jména wokenních syscallů jsou oproti těm unixovým mnohem čitelnější. Ne, že by mě to nějak trápilo, od toho hnusu dole se s radostí nechám odstínit nějakou tou Javou, Adou nebo .NETem. :-)

pc
pc (neregistrovaný)
12. 3. 2004 12:39 Nový

Re: Asyns + sync IO

celé vlákno

> Jména wokenních syscallů jsou oproti těm unixovým
> mnohem čitelnější.

To me tedy neprijde, a pochybuji ze jsou pro programatory pisatelnejsi. Vubec z celych Windows cisi laska k psani na klavesnici. Srovnejte si treba
/home/vopicka vs C:\Documents and Settings\František Vopička
/opt vs C:\Program Files
/etc vs HKEY_LOCAL_MACHINE
eth0 vs Local network connection (v ceskych je to tusim "Připojení k místní síti" vcetne diakritiky - vyborne kdyz to nekam potrebujete napsat pres telnet)
atd.

Jerry III
Jerry III (neregistrovaný)
12. 3. 2004 9:49 Nový

Re: Asyns + sync IO

celé vlákno

Synchronizacni funkce ve Win nejsou bezpecny? Mozna by sis o Win32 API mohl prvne neco precist, protoze ve Win maj synchronizacni handly (a jiny, jako treba procesy) ACL. Pokud programujes na Win32 nebezpecne tak jen protoze ses liny prase, ne proto ze by Win32 API nebylo bezpecny.

Samozrejme nemluvme o Win9x rade, ta je nastesti dneska uz historii (asi jako u Linuxu se uz dneska mluvi jen o 2.6 a 2.4 kernelech).

Clock
Clock (neregistrovaný)
11. 3. 2004 11:15 Nový

Re: Async + sync IO

celé vlákno

Zapoměl jsem dodat že mě to zajímá u Linuxu. Ale jestli to Linux neumí tak to může bejt cokolik jinýho co je svobodný software.

Mikuláš Patočka
Mikuláš Patočka (neregistrovaný)
12. 3. 2004 1:11 Nový

Re: Asyns + sync IO

celé vlákno

Udělej aio_read na stdin a aio_read/write na tom souboru a pak pomocí aio_suspend počkej, až některá z těch operací doběhne.

mato
mato (neregistrovaný)
12. 3. 2004 9:20 Nový

plan9

celé vlákno

zdravim,
zaujimalo by ma, ci autor ma nejake skusenosti a aky je jeho nazor na plan9 (co by podla tvorcov mal byt unix buducnosti).
martin

Zasílat nově přidané příspěvky e-mailem