LLDB  mainline
ThreadCollection.h
Go to the documentation of this file.
1 //===-- ThreadCollection.h --------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef liblldb_ThreadCollection_h_
10 #define liblldb_ThreadCollection_h_
11 
12 #include <mutex>
13 #include <vector>
14 
15 #include "lldb/Utility/Iterable.h"
16 #include "lldb/lldb-private.h"
17 
18 namespace lldb_private {
19 
21 public:
22  typedef std::vector<lldb::ThreadSP> collection;
23  typedef LockingAdaptedIterable<collection, lldb::ThreadSP, vector_adapter,
24  std::recursive_mutex>
26 
28 
29  ThreadCollection(collection threads);
30 
31  virtual ~ThreadCollection() {}
32 
33  uint32_t GetSize();
34 
35  void AddThread(const lldb::ThreadSP &thread_sp);
36 
37  void AddThreadSortedByIndexID(const lldb::ThreadSP &thread_sp);
38 
39  void InsertThread(const lldb::ThreadSP &thread_sp, uint32_t idx);
40 
41  // Note that "idx" is not the same as the "thread_index". It is a zero based
42  // index to accessing the current threads, whereas "thread_index" is a unique
43  // index assigned
44  lldb::ThreadSP GetThreadAtIndex(uint32_t idx);
45 
46  virtual ThreadIterable Threads() {
48  }
49 
50  virtual std::recursive_mutex &GetMutex() const { return m_mutex; }
51 
52 protected:
53  collection m_threads;
54  mutable std::recursive_mutex m_mutex;
55 };
56 
57 } // namespace lldb_private
58 
59 #endif // liblldb_ThreadCollection_h_
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
virtual ThreadIterable Threads()
void AddThreadSortedByIndexID(const lldb::ThreadSP &thread_sp)
lldb::ThreadSP GetThreadAtIndex(uint32_t idx)
E vector_adapter(I &iter)
Definition: Iterable.h:21
std::vector< lldb::ThreadSP > collection
virtual std::recursive_mutex & GetMutex() const
std::recursive_mutex m_mutex
void AddThread(const lldb::ThreadSP &thread_sp)
LockingAdaptedIterable< collection, lldb::ThreadSP, vector_adapter, std::recursive_mutex > ThreadIterable
void InsertThread(const lldb::ThreadSP &thread_sp, uint32_t idx)