Article View: pl.comp.lang.c
Article #310067Re: Coroutines w (GNU) C
From: Maciek Godek
Date: Fri, 24 Jan 2020 21:26
Date: Fri, 24 Jan 2020 21:26
21 lines
2343 bytes
2343 bytes
W dniu piątek, 24 stycznia 2020 20:44:01 UTC+1 użytkownik Borneq napisał: > On 1/24/20 12:44 PM, Maciek Godek wrote: > > Jeśli by to kogoś interesowało, to dziś "wymyśliłem" prosty sposób na implementację "coroutines" w C. > > > A nie znane z C : setjmp/longjmp? Kiedyś dla zabawy napisałem sobie implementację wątków w oparciu o setjmp.h: https://github.com/panicz/hubertos/blob/master/hubertos.c Ale to jest w moim odczuciu raczej ciężki mechanizm (podobnie jak call/cc w Scheme) i raczej wolę go nie używać w produkcyjnym kodzie. Natomiast jeżeli idzie o powyższą implementację coroutines, to jest bardzo prosta, i chociaż jest parę sposobów, na jakie można ją źle użyć (np. zmienne automatyczne będą miały w po przywróceniu sterowania nieokreślone wartości, i można omyłkowo napisać "return" zamiast COROUTINE_RETURN), to ogólnie wydaje się raczej spolegliwym mechanizmem. Zresztą moja intencja użycia jest właśnie taka, żeby sobie przy ich pomocy robić "takie jakby wątki" w kodzie opartym na przerwaniach.
Technical Details
Message-ID:
<516970d0-ceb8-4778-b53d-7ddb86d38aed@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!g89no7317766qtd.0!news-out.google.com!w29ni298qtc.0!nntp.google.com!g89no7317762qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <5e2b48e2$0$31100$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:42d7:: with SMTP id g23mr4480188qtm.206.1579901220598; Fri, 24 Jan 2020 13:27:00 -0800 (PST) X-Received: by 2002:a25:9cc7:: with SMTP id z7mr3962759ybo.309.1579901220399; Fri, 24 Jan 2020 13:27:00 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!g89no7317766qtd.0!news-out.google.com!w29ni298qtc.0!nntp.google.com!g89no7317762qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Fri, 24 Jan 2020 13:26:59 -0800 (PST) In-Reply-To: <5e2b48e2$0$31100$65785112@news.neostrada.pl> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=83.25.216.212; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 83.25.216.212 References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <5e2b48e2$0$31100$65785112@news.neostrada.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <516970d0-ceb8-4778-b53d-7ddb86d38aed@googlegroups.com> Subject: Re: Coroutines w (GNU) C From: Maciek Godek <godek.maciek@gmail.com> Injection-Date: Fri, 24 Jan 2020 21:27:00 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit