|
| Overvågning af process Fra : Stephan Henningsen |
Dato : 11-10-01 10:10 |
|
Nå, jeg fandt efter lidt bakseri og sved på panden ud af, at
den smarteste måde at føre ikke-buffered kommunikation på i
C++ med streams er ved ikke at bruge C++ og streams, men ved
at kalde C's open/close/read/write i stedet for. Så nu
virker det. Sådan da.
Jeg har skrevet en funktion der sender en forespørgsel til
noget hardware på serielporten, og hardwaren melder så
tilbage, og jeg læser informationerne. Problemet er, at
nogen gange går kommunikationen død af uvisse årsager (kan
det skyldes at mit seriel-kabel er ~5 meter langt?).
Så jeg har tænkt på at give funktionen et vist antal
sekunder til at udføre sin komunikation, og hvis den ikke
returnerer inden da, så slå den ihjel.
Er det smart at bruge tråde og f.eks. lade dem dele en
bool operation_completed ?
Er dette den rigtige måde, at gøre det på?
Er der andre, der har erfaringer med dette?
--
Stephan Henningsen /
/ tisprut productions[tm]
| |
Kent Friis (11-10-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-10-01 21:32 |
|
Den 11 Oct 2001 09:10:16 GMT skrev Stephan Henningsen:
>
>Nå, jeg fandt efter lidt bakseri og sved på panden ud af, at
>den smarteste måde at føre ikke-buffered kommunikation på i
>C++ med streams er ved ikke at bruge C++ og streams, men ved
>at kalde C's open/close/read/write i stedet for. Så nu
>virker det. Sådan da.
Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
fwrite.
På *nix er open/close/read/write systemkald.
>Jeg har skrevet en funktion der sender en forespørgsel til
>noget hardware på serielporten, og hardwaren melder så
>tilbage, og jeg læser informationerne. Problemet er, at
>nogen gange går kommunikationen død af uvisse årsager (kan
>det skyldes at mit seriel-kabel er ~5 meter langt?).
Det burde det ikke.
>Så jeg har tænkt på at give funktionen et vist antal
>sekunder til at udføre sin komunikation, og hvis den ikke
>returnerer inden da, så slå den ihjel.
>
>Er det smart at bruge tråde og f.eks. lade dem dele en
>bool operation_completed ?
>
>Er dette den rigtige måde, at gøre det på?
Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
noget på. Der er simpelthen så mange muligheder for at noget kan gå
galt.
Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
en passende timeout.
Mvh
Kent
--
War does not determine who is right, only who is left.
| |
Stephan Henningsen (12-10-2001)
| Kommentar Fra : Stephan Henningsen |
Dato : 12-10-01 08:30 |
|
On Thu, 11 Oct 2001 20:32:08 +0000 (UTC), Kent Friis wrote:
>
>Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
>fwrite.
>
>På *nix er open/close/read/write systemkald.
Aha, jeg troede de var en del af standard C.
>>Er det smart at bruge tråde og f.eks. lade dem dele en
>>bool operation_completed ?
>>
>>Er dette den rigtige måde, at gøre det på?
>
>Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
>noget på. Der er simpelthen så mange muligheder for at noget kan gå
>galt.
>
>Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
>en passende timeout.
Jeg sidder og laeser man-siden nu. Mange tak.
Jeg har ioevrigt fundet en fejl i mit program samt lavet en
smartere laese-loekke, saa jeg tror, at jeg klarer mig uden
select() indtil videre.
--
Stephan Henningsen /
/ tisprut productions[tm]
| |
Kim Petersen (14-10-2001)
| Kommentar Fra : Kim Petersen |
Dato : 14-10-01 21:16 |
|
stephan@levelout.tisprut.dk (Stephan Henningsen) writes:
> On Thu, 11 Oct 2001 20:32:08 +0000 (UTC), Kent Friis wrote:
> >
> >Øh, C har da ikke open/close/read/write. De hedder fopen/fclose/fread/
> >fwrite.
> >
> >På *nix er open/close/read/write systemkald.
>
> Aha, jeg troede de var en del af standard C.
Det er de også, open/close/read/write er de "rigtige" funktioner,
hvorimod fopen/fclose etc. er "bufferede" filer. Disse er implementeret
i C. Hvorimod open/close etc. som regel er lowlevel system kald.
>
>
> >>Er det smart at bruge tråde og f.eks. lade dem dele en
> >>bool operation_completed ?
> >>
> >>Er dette den rigtige måde, at gøre det på?
> >
> >Hvis du spørger mig, så er threads aldrig den rigtige måde at gøre
> >noget på. Der er simpelthen så mange muligheder for at noget kan gå
> >galt.
> >
> >Jeg ville til dit formål (forudsat *nix) bruge select(), og give den
> >en passende timeout.
>
> Jeg sidder og laeser man-siden nu. Mange tak.
>
> Jeg har ioevrigt fundet en fejl i mit program samt lavet en
> smartere laese-loekke, saa jeg tror, at jeg klarer mig uden
> select() indtil videre.
>
>
> --
> Stephan Henningsen /
> / tisprut productions[tm]
>
--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark
| |
|
|