Article View: pl.comp.lang.c
Article #310199Re: Coroutines w (GNU) C
From: Maciek Godek
Date: Wed, 29 Jan 2020 21:40
Date: Wed, 29 Jan 2020 21:40
45 lines
3913 bytes
3913 bytes
W dniu środa, 29 stycznia 2020 22:25:33 UTC+1 użytkownik heby napisał:
> >> yeld( 42 );
> >> for( i = 6 ; i < 10 ; ++i )
> >> [...]
> >> yeld( i );
> >> [...]
> > Czas start.
> > int f(void) {
> > COROUTINE_START();
> > static int i;
>
> Jeb. Właśnie użyłeś zmiennej globalnej. Ojej. Co się może stać?
No. Co się może stać?
> Innymi słowy jesteś krytykowany że twój kod wymaga zmiennych globalnych,
> pytasz "czego nie możesz zrobić bez stosu, a co mógłbyć zrobić, gdybyś
> miał korutyny ze stosem", podaje przykład a ty dajesz przykład korutyny
> bez stosu joko dowód że też da się zrobić.
To, czy użyjesz zmiennej automatycznej, czy statycznej, to tylko drobna różnica w implementacji. Funkcjonalnie ten kod jest identyczny.
A jeżeli nie jest, to pokaż mi proszę różnicę.
> > Hmm. Chyba wygląda dość tak samo.
>
> Nie, jedno to pure function a druga to side effect. Fundamentalna
> różnica, ludzie poświęcili życie aby wykazać lepszosc jednych nad
> drugimi, tony prac naukowych napisali. Przykro mi że nie dostrzegasz
> tego "detalu".
Korutyna nie jest "pure function".
Poczytaj sobie może troszkę, zanim zaczniesz używać terminologii.
Czyste funkcje w ogóle nie mają czegoś takiego, jak "przebieg sterowania".
> >> PS. Zmienne statyczne tez nie są potrzebne. Wystarczy dowolny obiekt
> >> trzymający stan korutyny. Zaznaczam że jest to tylko niewiele lepsze
> >> rozwiązanie bo ten obiekt też musi być śledzony jeśli nie daj Panie
> >> korutyny będą się przeplatać. Tak czy owak d...z tyłu.
> > Nadal nie podałeś żadnego przykładu.
>
> Nie musiałem, sam napisałeś przed chwilą przykład korutyny która jest
> nie reentrant, thradsafe, wahatever. Moja z boosta jest reentrant,
> threadsafe, whatever.
No to pokaż mi różnicę behawioralną. Pokaż, jak jedna się może zepsuć, a druga nie może, bo na razie to tak sobie gadasz.
Technical Details
Message-ID:
<cc360fba-2eab-4928-8e14-36db20fa4a96@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!g89no715624qtd.0!news-out.google.com!w29ni988qtc.0!nntp.google.com!g89no715616qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <b7cfec93-1d13-44e3-a924-0869447ed3c7@googlegroups.com> <r0seqp$av0$1@dont-email.me> <462689f9-f50d-4a96-8910-cb65757a017a@googlegroups.com> <r0st86$956$1@dont-email.me>Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:4047:: with SMTP id n68mr2041410qka.258.1580334050839; Wed, 29 Jan 2020 13:40:50 -0800 (PST) X-Received: by 2002:a25:2348:: with SMTP id j69mr1359815ybj.465.1580334050616; Wed, 29 Jan 2020 13:40:50 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!g89no715624qtd.0!news-out.google.com!w29ni988qtc.0!nntp.google.com!g89no715616qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Wed, 29 Jan 2020 13:40:50 -0800 (PST) In-Reply-To: <r0st86$956$1@dont-email.me> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=83.25.200.96; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 83.25.200.96 References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <b7cfec93-1d13-44e3-a924-0869447ed3c7@googlegroups.com> <r0seqp$av0$1@dont-email.me> <462689f9-f50d-4a96-8910-cb65757a017a@googlegroups.com> <r0st86$956$1@dont-email.me> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <cc360fba-2eab-4928-8e14-36db20fa4a96@googlegroups.com> Subject: Re: Coroutines w (GNU) C From: Maciek Godek <godek.maciek@gmail.com> Injection-Date: Wed, 29 Jan 2020 21:40:50 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit