> Hi ALL
> I am using threadx. Is there any way i can wait on a thread. I need
> to know when a thread has completed its execution.
If you have to actually *wait* for it, it's probably the wrong plan to
move that job to a separate thread in the first place. If you just
want something done once the thread finishes, the thread should do
that by itself.
--
Hans-Bernhard Broeker (broeker@physik.rwth-aachen.de)
Even if all the snow were burnt, ashes would remain.
Reply by Nicholas O. Lindan●February 22, 20052005-02-22
> I am using threadx. Is there any way i can wait on a thread. I need
> to know when a thread has completed its execution.
Er, have the waited upon thread send a signal to the
waitee upon completion.
--
Nicholas O. Lindan, Cleveland, Ohio
Consulting Engineer: Electronics; Informatics; Photonics.
To reply, remove spaces: n o lindan at ix . netcom . com
psst.. want to buy an f-stop timer? nolindan.com/da/fstop/
Reply by Arie de Muynck●February 22, 20052005-02-22
<one.zero.one.one@gmail.com> wrote in message
news:1109043872.259260.119800@z14g2000cwz.googlegroups.com...
> Hi ALL
> I am using threadx. Is there any way i can wait on a thread. I need
> to know when a thread has completed its execution. This is possible in
> windows by using:
>
> WaitForSingleObject((HANDLE)event, timeout);
>
> Is there anything equivalent to that in threadx or any other rtos's.
>
> Threadx only has the following APIs defined for threads. Can we use
> these to do the same.
>
<snip>
AFAIK for ThreadX the only way to get a thread's state is to poll the state
(you could do this in a repetitive thread which then signals an event):
UINT tx_thread_info_get(
TX_THREAD *thread_ptr,
CHAR **name,
UINT *state, // see header files for the enum
ULONG *run_count,
UINT *priority,
UINT *preemption_threshold,
ULONG *time_slice,
TX_THREAD **next_thread,
TX_THREAD **next_suspended_thread
);
or to signal an event from the thread itself just before the thread finishes
in a _normal_ way, and never using an tx_thread_terminate() or the like.
If you do have the sources, you could easily add a function to the OS like:
tx_set_terminate_event(*TX_THREAD, *TX_EVENT, ULONG bits);
This would set in the TX_THREAD structure a pointer to an event that has to
be signalled whenever a thread is terminated. Only the OS knows for sure
when that state change happens...
> Thanks a LOT
> 1011 10
111 11's,
Arie de Muynck
Reply by one....@gmail.com●February 21, 20052005-02-21
Hi ALL
I am using threadx. Is there any way i can wait on a thread. I need
to know when a thread has completed its execution. This is possible in
windows by using:
WaitForSingleObject((HANDLE)event, timeout);
Is there anything equivalent to that in threadx or any other rtos's.
Threadx only has the following APIs defined for threads. Can we use
these to do the same.
UINT tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr,VOID
(*entry_function)(ULONG), ULONG entry_input,
VOID *stack_start, ULONG stack_size,
UINT priority, UINT preempt_threshold,
ULONG time_slice, UINT auto_start);
UINT tx_thread_delete(TX_THREAD *thread_ptr);
TX_THREAD *tx_thread_identify(VOID);
UINT tx_thread_info_get(TX_THREAD *thread_ptr, CHAR **name,
UINT *state, ULONG *run_count, UINT *priority,
UINT *preemption_threshold, ULONG *time_slice,
TX_THREAD **next_thread,
TX_THREAD **next_suspended_thread);
UINT tx_thread_preemption_change(TX_THREAD *thread_ptr,
UINT new_threshold, UINT *old_threshold);
UINT tx_thread_priority_change(TX_THREAD *thread_ptr,
UINT new_priority, UINT *old_priority);
VOID tx_thread_relinquish(VOID);
UINT tx_thread_resume(TX_THREAD *thread_ptr);
UINT tx_thread_sleep(ULONG timer_ticks);
UINT tx_thread_suspend(TX_THREAD *thread_ptr);
UINT tx_thread_terminate(TX_THREAD *thread_ptr);
UINT tx_thread_time_slice_change(TX_THREAD *thread_ptr,
ULONG new_time_slice, ULONG *old_time_slice);
UINT tx_thread_wait_abort(TX_THREAD *thread_ptr);
Thanks a LOT
1011 10