2002 2003 2004 2005 <2006> 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 | Index | 2002 2003 2004 2005 <2006> 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: A question about how to send message in the callback function |
From: | "Jeff Hill" <[email protected]> |
To: | 'ÕÔ»¶' <[email protected]>, <[email protected]> |
Date: | Mon, 27 Mar 2006 08:45:24 -0700 |
PPS: I made some revisions in that section of the manual this morning.
Jeff
CA Client Contexts and Application Specific Auxiliary Threads
It is often necessary for several CA client side tools running in the same address space (process) to be independent of each other. For example, the database CA links and the sequencer are designed to not use the same CA client library threads, network circuits, and data structures. Each thread that calls ca_context_create() for the first time either directly, or implicitly when calling any CA library function for the first time, creates a CA client library context. A CA client library context contains all of the threads, network circuits, and data structures required to connect and communicate with the channels that a CA client application has created. The priority of auxiliary threads spawned by the CA client library are at fixed offsets from the priority of the thread that called ca_context_create(). An application specific auxiliary thread can join a CA context by calling ca_attach_context() using the CA context identifier that was returned from ca_current_context() when it is called by the thread that created the context which needs to be joined. A context which is to be joined must be preemptive - it must be created using ca_context_create(ca_enable_preemptive_callback). It is not possible to attach a thread to a non-preemptive CA context created explicitly or implicitly with ca_create_context(ca_disable_preemptive_callback). Once a thread has joined with a CA context it need only make ordinary ca_xxxx() library calls to use the context.
-----Original Message-----
Dear everybody: I am a novice to EPICS. I want to develop a simple application which will have functions of put,get and monitor channels in IOC. I have installed EPICS Base R Now, I face a puzzle. I cteate a auxiliary thread. And in the auxiliary thread, I do an operation of create a monitor(ca_create_subscription). Then in the monitor’s callback faction, I make an operation of sendmessage. The problem is coming. The runing programe is dead at the sendmessage step. If somebody have the experience, tell me what is wrong in my application, and how can I resolve it. Thanks ZHAO HUAN Shanghai Institute of Applied Physics Tel: +86-21-59553146
|