<div dir="auto">Evenimentele sunt și ele distincte?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 15, 2020, 16:44 Dorin Geman <<a href="mailto:dorin.geman@rosedu.org">dorin.geman@rosedu.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Din păcate, aceeași <span>problemă</span>.</div><div>Am modificat <span>ca</span> ReadFile să folosească un OVERLAPPED diferit, însă nu s-a schimbat nimic.</div><div>ReadFile <span>întoarce</span> <span>FALSE</span> <span>și</span> GetLastError() == ERROR_IO_PENDING <span>și</span> <span>rămâne</span> <span>agățat</span> acolo, nu primesc eveniment pe <span>structura</span> OVERLAPPED <span>dată</span> <span>ca</span> parametru.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 15, 2020 at 4:21 PM Dorin Geman <<a href="mailto:dorin.geman@rosedu.org" target="_blank" rel="noreferrer">dorin.geman@rosedu.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Awesome, mersi!<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 15, 2020 at 4:08 PM Paul Olaru <<a href="mailto:olarupaulstelian97@gmail.com" target="_blank" rel="noreferrer">olarupaulstelian97@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="EN-US"><div><p class="MsoNormal"><span lang="RO">Nu am un exemplu clar dar o chestie indirectă e următorul citat:<u></u><u></u></span></p><p class="MsoNormal"><span lang="RO"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:12pt;font-family:"Segoe UI",sans-serif;color:rgb(227,227,227);background:rgb(23,23,23) none repeat scroll 0% 0%">A common mistake is to reuse an <b>OVERLAPPED</b> structure before the previous asynchronous operation has been completed. You should use a separate structure for each request. You should also create an event object for each thread that processes data. If you store the event handles in an array, you could easily wait for all events to be signaled using the </span><a href="https://docs.microsoft.com/windows/desktop/api/synchapi/nf-synchapi-waitformultipleobjects" target="_blank" rel="noreferrer"><span style="font-size:12pt;font-family:"Segoe UI",sans-serif;background:rgb(23,23,23) none repeat scroll 0% 0%">WaitForMultipleObjects</span></a><span style="font-size:12pt;font-family:"Segoe UI",sans-serif;color:rgb(227,227,227);background:rgb(23,23,23) none repeat scroll 0% 0%"> function.<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">O structură OVERLAPPED e asociată unei singure cereri, iar cererea trebuie să fie completă, să se termine, înainte de a putea reutiliza structura. O structură OVERLAPPED poate asculta doar pentru un eveniment și apoi trebuie reconfigurată; dacă e reconfigurată înainte ca cererea anterioară să se termine o să pierzi evenimentul din acea cerere anterioară.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Practic când refolosești un OVERLAPPED, cea mai recentă configurație e cea care are efect, dar în timpul celei mai recente configurații trebuie ca toate câmpurile nefolosite să fie resetate.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">În handler-ul evenimentului unui OVERLAPPED, acel OVERLAPPED încă nu e ok pentru reutilizare pentru că Win32 încă îl folosește tocmai pentru a-ți triggerui evenimentul. Acel trigger este sincron. După ce ieși din handler structura poate fi reutilizată.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">So. Folosește structuri OVERLAPPED/WSAOVERLAPPED (după cum ai spus sunt compatibile deci folosești structura care are sens cu o anumită operație) separate pentru operațiile I/O concurente, cu considerentul că handlerul de completion face parte din operația de I/O.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Păstrează un OVERLAPPED pentru fișier și altul pentru socket. Sigur, între cereri poți să le refolosești just fine.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Nu e nevoie de documentație ca să încerci acest fix și să observi că merge.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank" rel="noreferrer">Mail</a> for Windows 10</p><p class="MsoNormal"><u></u> <u></u></p><div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0in 0in"><p class="MsoNormal" style="border:medium none;padding:0in"><b>From: </b><a href="mailto:dorin.geman@rosedu.org" target="_blank" rel="noreferrer">Dorin Geman</a><br><b>Sent: </b>Friday, May 15, 2020 3:53 PM<br><b>To: </b><a href="mailto:olarupaulstelian97@gmail.com" target="_blank" rel="noreferrer">Paul Olaru</a><br><b>Cc: </b><a href="mailto:so@cursuri.cs.pub.ro" target="_blank" rel="noreferrer">Sisteme de Operare</a><br><b>Subject: </b>Re: [so] [Tema5][Windows] ReadFile + WSAOVERLAPPED</p></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><div><div style="border-style:solid none none;border-width:1pt medium medium;padding:3pt 0in 0in;border-color:currentcolor"><p class="MsoNormal"><b>From: </b><a href="mailto:so@cursuri.cs.pub.ro" target="_blank" rel="noreferrer">Dorin Geman via so</a><br><b>Sent: </b>Friday, May 15, 2020 3:35 PM<br><b>To: </b><a href="mailto:so@cursuri.cs.pub.ro" target="_blank" rel="noreferrer">Sisteme de Operare</a><br><b>Subject: </b>[so] [Tema5][Windows] ReadFile + WSAOVERLAPPED</p></div><p class="MsoNormal"> </p><div><div><p class="MsoNormal">Salutare,</p></div><div><p class="MsoNormal"> </p></div><p class="MsoNormal">Am o mică nelămurire.</p><div><p class="MsoNormal">Am citit că structurile OVERLAPPED și WSAOVERLAPPED sunt compatibile, deci pot folosi un WSAOVERLAPPED la ReadFile. Cu toate acestea, dacă în funcția aferentă unui structuri ov apelez ReadFile cu parametru aceeași structura ov, programul rămâne blocat pentru că nu mai primesc eveniment pe acea structură.</p></div><div><p class="MsoNormal">Fișierul este deschis cu FILE_FLAG_OVERLAPPED.</p></div><div><p class="MsoNormal"> </p></div><div><p class="MsoNormal"><span>Mersi</span> anticipat și o zi <span>frumoasă</span>,</p></div></div><p class="MsoNormal">Dorin Geman</p><p class="MsoNormal"> </p></div></div></blockquote><div><div><p class="MsoNormal">On Fri, May 15, 2020 at 3:41 PM Paul Olaru <<a href="mailto:olarupaulstelian97@gmail.com" target="_blank" rel="noreferrer">olarupaulstelian97@gmail.com</a>> wrote:</p></div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal"><span lang="RO">Nu cred că e vorba de o problemă de compatibilitate între OVERLAPPED și WSAOVERLAPPED, ci mai degrabă</span></p><p class="MsoNormal"><span lang="RO">e o problemă de reutilizare. Structura OVERLAPPED e deja activă în callback-ul aferent și nu e o idee bună să</span></p><p class="MsoNormal"><span lang="RO">o refolosești când este deja activă – you’re going to cause confusion if not worse.</span></p><p class="MsoNormal"><span lang="RO"> </span></p><p class="MsoNormal"><span lang="RO">Folosește o structură OVERLAPPED separată.</span></p><p class="MsoNormal"> </p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank" rel="noreferrer">Mail</a> for Windows 10</p></div></div></blockquote><p class="MsoNormal"> </p></div><div><p class="MsoNormal">Și totuși, la TransmitFile merge <span>să</span> folosesc aceeași <span>structură</span> și la următorul eveniment să închid conexiunea.</p></div><div><p class="MsoNormal">Can you provide some further reading? Related to</p></div><div><p class="MsoNormal">```</p><p class="MsoNormal"><span lang="RO">Structura OVERLAPPED e deja activă în callback-ul aferent și nu e o idee bună să</span></p><p class="MsoNormal"><span lang="RO">o refolosești când este deja activă – you’re going to cause confusion if not worse.</span></p><p class="MsoNormal"><span lang="RO">```</span></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span lang="RO">Mersi fain,</span></p></div></div></div><p class="MsoNormal"><span lang="RO">Dorin Geman</span></p><p class="MsoNormal"><u></u> <u></u></p></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>