/ / Testovanie zapisovateľnosti zásuvky BSD v kakau - kakao, asynchrónne, zásuvky

Testovanie zapisovateľnosti zásuvky BSD v kakao - kakao, asynchrónne, zásuvky

Mám vytvorenú zásuvku BSD s nasledujúcim kódom (je v externej knižnici, ktorú nemôžem zmeniť):

fcntl(sock, F_SETFL, O_NONBLOCK);
connect(sock, (struct sockaddr*) &sin, sizeof(sin))

Čo môžem urobiť, aby som dostal upozornenie od kakaatoto spojenie je nadviazané? V bežnom svete by som urobil select (3) a testoval zapisovateľnosť, ale to buď blokuje alebo vyžaduje dotazovanie (alebo potrebujem vlákno)

Snažil som sa NSFileFandle ale to mi umožňuje iba otestovať, či sú k dispozícii nové údaje, nie že je pripojenie pripravené na zápis.

odpovede:

1 pre odpoveď č. 1

Takýto mechanizmus tiež nevidím v príkladoch a dokumentoch kakaa.

Ide o to, že tiež nevidím jadromechanizmus, ktorý by sa mohol použiť na vytvorenie takého mechanizmu v kakau. Bez podpory jadra, aj keď existuje spôsob, ako dostať upozornenie na asynchrónne pripojenie z nejakého rámca na vysokej úrovni, nebude to efektívnejšie, ako navrhuješ, keď zavoláte select () vo vlákne.

Túto myšlienku by ste mohli trochu vylepšiť, napríklad tak, že namiesto select () použijete kqueue () a zhromaždíte všetky popisovače súborov a deskriptory zásuviek aplikácie dohromady, takže nepotrebujete vlákno.