Before this patch, any time TreeItem is copied in Resize method, its parent is not updated, which can cause crashes when, for example, thread window with multiple hierarchy levels is updated. Makes TreeItem move-only, removes TreeItem's m_delegate extra self-assignment by making it a pointer, adds code to fix up children's parent on move constructor and operator= Patch prepared by NH5pml30 ~~~ Huawei RRI, OS Lab Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D157960
26 lines
512 B
C++
26 lines
512 B
C++
#include <iostream>
|
|
#include <thread>
|
|
#include <vector>
|
|
|
|
#include "pseudo_barrier.h"
|
|
|
|
pseudo_barrier_t barrier_inside;
|
|
|
|
void thread_func() { pseudo_barrier_wait(barrier_inside); }
|
|
|
|
void test_thread() {
|
|
std::vector<std::thread> thrs;
|
|
for (int i = 0; i < 5; i++)
|
|
thrs.push_back(std::thread(thread_func)); // break here
|
|
|
|
pseudo_barrier_wait(barrier_inside); // break before join
|
|
for (auto &t : thrs)
|
|
t.join();
|
|
}
|
|
|
|
int main() {
|
|
pseudo_barrier_init(barrier_inside, 6);
|
|
test_thread();
|
|
return 0;
|
|
}
|