A Discrete-Event Network Simulator
API
system-thread.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2008 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathieu Lacage <mathieu.lacage.inria.fr>
19  */
20 
21 #ifndef SYSTEM_THREAD_H
22 #define SYSTEM_THREAD_H
23 
24 #include "ns3/core-config.h"
25 #include "callback.h"
26 #ifdef HAVE_PTHREAD_H
27 #include <pthread.h>
28 #endif /* HAVE_PTHREAD_H */
29 
36 namespace ns3 {
37 
56 class SystemThread : public SimpleRefCount<SystemThread>
57 {
58 public:
59 
60 #ifdef HAVE_PTHREAD_H
61 
62  typedef pthread_t ThreadId;
63 #endif
64 
126  SystemThread(Callback<void> callback);
127 
132  ~SystemThread();
133 
137  void Start (void);
138 
143  void Join (void);
149  static ThreadId Self(void);
150 
157  static bool Equals(ThreadId id);
158 
159 private:
160 #ifdef HAVE_PTHREAD_H
161 
167  static void *DoRun (void *arg);
168 
170  pthread_t m_thread;
171 #endif
172 };
173 
174 } // namespace ns3
175 
176 #endif /* SYSTEM_THREAD_H */
177 
178 
void Start(void)
Start a thread of execution, running the provided callback.
static ThreadId Self(void)
Returns the current thread Id.
~SystemThread()
Destroy a SystemThread object.
pthread_t m_thread
The thread id of the child thread.
A class which provides a relatively platform-independent thread primitive.
Definition: system-thread.h:56
SystemThread(Callback< void > callback)
Create a SystemThread object.
Declaration of the various callback functions.
pthread_t ThreadId
Type alias for the system-dependent thread object.
Definition: system-thread.h:62
static void * DoRun(void *arg)
Invoke the callback in the new thread.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static bool Equals(ThreadId id)
Compares an ThreadId with the current ThreadId .
void Join(void)
Suspend the caller until the thread of execution, running the provided callback, finishes.
Callback< void > m_callback
The main function for this thread when launched.
A template-based reference counting class.