<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.gmail-m7272646727567274184gmail-word
{mso-style-name:gmail-m_7272646727567274184gmail-word;}
span.gmail-word
{mso-style-name:gmail-word;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=RO>Nu am un exemplu clar dar o chestie indirectă e următorul citat:<o:p></o:p></span></p><p class=MsoNormal><span lang=RO><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#E3E3E3;background:#171717'>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"><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;background:#171717'>WaitForMultipleObjects</span></a><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#E3E3E3;background:#171717'> function.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></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><o:p> </o:p></p><p class=MsoNormal>Nu e nevoie de documentație ca să încerci acest fix și să observi că merge.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:dorin.geman@rosedu.org">Dorin Geman</a><br><b>Sent: </b>Friday, May 15, 2020 3:53 PM<br><b>To: </b><a href="mailto:olarupaulstelian97@gmail.com">Paul Olaru</a><br><b>Cc: </b><a href="mailto:so@cursuri.cs.pub.ro">Sisteme de Operare</a><br><b>Subject: </b>Re: [so] [Tema5][Windows] ReadFile + WSAOVERLAPPED</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><div style='border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b>From: </b><a href="mailto:so@cursuri.cs.pub.ro" target="_blank">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">Sisteme de Operare</a><br><b>Subject: </b>[so] [Tema5][Windows] ReadFile + WSAOVERLAPPED</p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Salutare,</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Am o mică nelămurire.</p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Fișierul este deschis cu FILE_FLAG_OVERLAPPED.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span class=gmail-m7272646727567274184gmail-word>Mersi</span> anticipat și o zi <span class=gmail-m7272646727567274184gmail-word>frumoasă</span>,</p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Dorin Geman</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </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">olarupaulstelian97@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO> </span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO>Folosește o structură OVERLAPPED separată.</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">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 class=gmail-word>să</span> folosesc aceeași <span class=gmail-word>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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO>Structura OVERLAPPED e deja activă în callback-ul aferent și nu e o idee bună să</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><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 style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO>```</span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><o:p> </o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO>Mersi fain,</span></p></div></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=RO>Dorin Geman</span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>