|
NCBI Home IEB Home C++ Toolkit docs C Toolkit source browser C Toolkit source browser (2) |
NCBI C++ Toolkit Cross ReferenceC++/src/util/thread_nonstop.cpp |
source navigation diff markup identifier search freetext search file search |
1 /* $Id: thread_nonstop.cpp 152541 2009-02-17 20:40:02Z grichenk $
2 * ===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government have not placed any restriction on its use or reproduction.
13 *
14 * Although all reasonable efforts have been taken to ensure the accuracy
15 * and reliability of the software and data, the NLM and the U.S.
16 * Government do not and cannot warrant the performance or results that
17 * may be obtained by using this software or data. The NLM and the U.S.
18 * Government disclaim all warranties, express or implied, including
19 * warranties of performance, merchantability or fitness for any particular
20 * purpose.
21 *
22 * Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * Author: Anatoliy Kuznetsov
27 *
28 * File Description: BDB libarary types implementations.
29 *
30 */
31
32 #include <ncbi_pch.hpp>
33 #include <util/thread_nonstop.hpp>
34 #include <corelib/ncbi_system.hpp>
35
36
37 BEGIN_NCBI_SCOPE
38
39
40 CThreadNonStop::CThreadNonStop(unsigned run_delay,
41 unsigned)
42 : m_RunInterval(run_delay),
43 m_StopSignal(0, 10000000)
44 {
45 }
46
47 bool CThreadNonStop::IsStopRequested() const
48 {
49 return m_StopFlag.Get() != 0;
50 }
51
52 void CThreadNonStop::RequestStop()
53 {
54 m_StopFlag.Add(1);
55 m_StopSignal.Post();
56 }
57
58 void CThreadNonStop::RequestDoJob()
59 {
60 m_StopSignal.Post();
61 }
62
63 void* CThreadNonStop::Main(void)
64 {
65 while (1) {
66
67 DoJob();
68
69 bool flag = m_StopSignal.TryWait(m_RunInterval, 0);
70 if (flag) {
71 if (m_StopFlag.Get() != 0) {
72 break;
73 }
74 }
75
76 } // for flag
77
78 return 0;
79 }
80
81
82 END_NCBI_SCOPE
83 |
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more information. |