[OSy] thread_join na neplatnou adresu vs. testy

loki loki at matfyz.cz
Wed Nov 9 22:06:35 CET 2005


o.k. uz jsem si toho vsimnul, ty thready jsou attached, takze je to v
poradku

jz

loki wrote:

> Dobry den,
>
> zajimalo by me, jak se ma chovat thread_join, jemuz je predana 
> neplatna adresa (neukazuje na existujici vlakno)
> v podstate me napadli 2 moznosti:
> 1) ohlasi EINVAL (neni vlakno),
> 2) ohlasi EOK (vlakno uz neni)
>
> prijde mi logictejsi varianta (1), protoze jinac se da uspesne volat 
> join na libovolnou adresu v pameti.
>
> Ale vsimnul jsem si jedne zajimave veci v testu thread1 je tam
>
> *while* (thread_a_active || thread_b_active) {
>         int result;
>
>         *if* (thread_a_active) {
>             result = thread_join_timeout (thread_a,
>                 JOIN_TIMEOUT_MS * 1000);
>             *if* (result == EOK) {
>                 /// we joined the thread/
>                 thread_a_active = 0;
>             }
>         }
>
>         *if* (thread_b_active) {
>             result = thread_join_timeout (thread_b, 0);
>             *if* (result == EOK) {
>                 /// we joined the thread/
>                 thread_b_active = 0;
>             }
>         }
>
>         printk ("*");
>     }
>
> tedy pokud bude vlakno a nebo b zruseno mezi dvemi kontrolnimi cykly 
> (nic tomu nebrani, nikdo na nej neceka, neni detached),
> zasekne se test v nekonecne smycce, protoze bude furt dostavat EINVAL. 
> Nemel by spis thread_x_active nastavovat sam thread_x?
> pak by proslo i u EINVAL.
>
> S pozdravem
>
> Jiri Zouhar
>
> _______________________________________________
> OSy mailing list
> OSy at nenya.ms.mff.cuni.cz
> http://nenya.ms.mff.cuni.cz/mailman/listinfo/osy
>
>
>





More information about the NSWI004 mailing list