Page 1 of 1

Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 13:12
by Popa Alin
Salutare,
Am si eu o nelamurire.
Cum pot sa folosesc "un delay" adica de exemplu sa accesez un fiser de pe drive la fiecare 50 de secunde.

Mersi fain

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 13:35
by Silviu Ardelean
Utilizand functia API Sleep(miliseconds); intr-o bucla in care faci aceea accesare.

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 14:07
by Dragos Cojocari
Sau cu un timer.

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 16:21
by Marius Bancila
Eu as folosi in timer. Eventual se poate folosi un thread dedicat unde bagi cum zicea silviu, cate un sleep intre 2 procesari.

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 16:49
by Silviu Ardelean
Daca aplicatia are si parte de user interface, atunci, clar as merge pe varianta lui Marius cu 2 thread-uri, in care, la thread-ul de accesare a fisierului, sa apelez Sleep().

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 12 Jun 2008, 22:44
by Ovidiu Cucu
BTW. In Windows "accesul la un fisier" este thread safe sau nu?

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 15 Jun 2008, 20:09
by Popa Alin
Mersi fain la toata lumea. Am rezolvat problema simplu cu un sleep() cum a zis Silviu.
Am rezolvat problema de atunci dar nu am avut timp sa postez.



P.S. Inca odata se dovedeste ca acest forum este bestial. :thumbup: :thumbsup:

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 15 Jun 2008, 20:14
by Popa Alin
Ovidiu Cucu wrote:BTW. In Windows "accesul la un fisier" este thread safe sau nu?

Sincer nu stiu ce sa zic, poate mai apar pareri de la cei cu mai multa experienta.

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 16 Jun 2008, 12:02
by Silviu Ardelean
Popa Alin wrote:Mersi fain la toata lumea. Am rezolvat problema simplu cu un sleep() cum a zis Silviu.
Am rezolvat problema de atunci dar nu am avut timp sa postez.
Alin, nu cunosc aplicatia ta, dar in mod normal astfel de probleme se rezolva cu doua thread-uri si Sleep().
Gandeste-te ca de ex. ai putea incerca sa accesezi ptr. citire/scriere fisiere de catvia MB, poate chiar zeci de MB. In acel moment, daca tu nu ai alege un thread dedicat pentru citire/scriere aplicatia ta, ti se va intzepenii cand citeste/scrie si doar dupa terminarea operatiei, ai putea continua executia aplicatiei.

All the best!

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 20 Jun 2008, 23:54
by Popa Alin
Silviu Ardelean wrote: Alin, nu cunosc aplicatia ta, dar in mod normal astfel de probleme se rezolva cu doua thread-uri si Sleep().
Gandeste-te ca de ex. ai putea incerca sa accesezi ptr. citire/scriere fisiere de catvia MB, poate chiar zeci de MB. In acel moment, daca tu nu ai alege un thread dedicat pentru citire/scriere aplicatia ta, ti se va intzepenii cand citeste/scrie si doar dupa terminarea operatiei, ai putea continua executia aplicatiei.

All the best!
Silviu, ca sa intelegi mai bine, tot ce imi trebuia mie am rezolvat si nu am probleme. Adica tot ce face aplicatia mea este: "acceseaza un fisier de pe drive, il deschide si apoi il inchide", that's all.
Este o aplicatie care ruleaza separat, adica pe langa ceea ce fac eu cu compul si aplicatiile aveam nevoie de o aplicatie mica care doar sa acceseze acel drive, deoarece daca nu il accesez timp de 2-3 minute intra intr-un fel de sleep mode si apoi orice accesare o considera ca fiind prima si pana aveam acces la informatii dura cam 10 secunde. Insa cu aceasta mica aplicatie am obtinut ce am vrut.
Insa nu inteleg ce vrei sa spui cu thread dedicat? Adica cum sa folosesc cele 2 thread-uri de care zici tu? Poti te rog sa fii mai explicit, sa imi dai mai multe detalii? Mersi fain.

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 21 Jun 2008, 10:33
by Silviu Ardelean
Alin, in situatia explicata de tine, intr-adevar nu mai e nevoie de un al 2-lea thread.
Situatia descrisa de mine cu doua thread-uri se aplica atunci cand efectuezi operatii de citire/scriere in fisiere ce pot ajunge la dimensiuni foarte mari.
Dupa cum stii, orice aplicatie are un thread principal. Sa presupunem ca aplicatia ta e de tip Dialog, iar in acest thread tu scrii si partea de afisare/modificare a continutului fisierelor.
Mergand pe ideea ca tu scrii partea de citire/scriere tot in thread-ul principal, in momentul in care tu ai deschide fisiere fisiere de dimensiuni foarte mari (ex. 10 MB), atunci, pana vei citii toate datele din fisier s-ar putea sa-ti ia cateva secunde bune, poate chiar zeci. Dar, pentru ca tu faci totul intr-un singur thread, pe durata citirii fisierului, tu nu vei mai putea face nimic in cadrul aplicatiei (sa interactionezi cu fereastra ta), ba chiar aplicatia iti va solicita mult procesorul.
Pentru a evita acest "disconfort" solutia e ca pentru partea de citire/scriere sa folosesti un thread secundar, ce iti va trimite o parte din datele citite in threadul principal. In aceasta situatie, pe perioada incarcarii/salvarii datelor, tu vei afisa/scrie doar o parte din continutul fisierului iar interfatza principala nu iti va fi blocata pe durata acestui proces de citire/scriere (implicit si procesorul va fi putzin utilizat).

Re: Intrebare Visual c++ despre Delay function/propertie

Posted: 24 Jun 2008, 10:39
by Popa Alin
Salutare tuturor.
O intrebare am si nu mai deschid alt topic pentru ca aici sa ajuns cu discutiile in punctul unde am eu nevoie.
Deci intrebarea mea este: "Pot sa fac ceva de genul, cum spune Silviu, cu thread-uri diferite si in Viasual Basic?". Adica m-am intalnit cu situatia de care vorbea Silviu, am o aplicatie cu interfata grafica si cand apas un buton asteapta sa introduc ceva pe portul serial, insa daca nu primeste nimic el tot sta acolo si nu mai pot sa interactionez cu fereastra.
Mersi fain.

P.S. Stiu ca este un forum de C++ dar ma gandesc ca poate stie cineva si Viasual Basic si ma poate ajuta.