System includes slow down test compilation and create unnecessary dependencies on system header code. This patch removes system headers from tests that do not test their functionality. For the most part, this just removes the dummy 'printf' we had in many tests.
60 lines
1.3 KiB
C++
60 lines
1.3 KiB
C++
#include "attach.h"
|
|
#include <chrono>
|
|
#include <thread>
|
|
|
|
using std::chrono::microseconds;
|
|
|
|
volatile int g_thread_2_continuing = 0;
|
|
|
|
void *
|
|
thread_1_func (void *input)
|
|
{
|
|
// Waiting to be released by the debugger.
|
|
while (!g_thread_2_continuing) // Another thread will change this value
|
|
{
|
|
std::this_thread::sleep_for(microseconds(1));
|
|
}
|
|
|
|
// Return
|
|
return NULL; // Set third breakpoint here
|
|
}
|
|
|
|
void *
|
|
thread_2_func (void *input)
|
|
{
|
|
// Waiting to be released by the debugger.
|
|
int child_thread_continue = 0;
|
|
while (!child_thread_continue) // The debugger will change this value
|
|
{
|
|
std::this_thread::sleep_for(microseconds(1)); // Set second breakpoint here
|
|
}
|
|
|
|
// Release thread 1
|
|
g_thread_2_continuing = 1;
|
|
|
|
// Return
|
|
return NULL;
|
|
}
|
|
|
|
int main(int argc, char const *argv[])
|
|
{
|
|
lldb_enable_attach();
|
|
|
|
// Create a new thread
|
|
std::thread thread_1(thread_1_func, nullptr);
|
|
|
|
// Waiting to be attached by the debugger.
|
|
int main_thread_continue = 0;
|
|
while (!main_thread_continue) // The debugger will change this value
|
|
{
|
|
std::this_thread::sleep_for(microseconds(1)); // Set first breakpoint here
|
|
}
|
|
|
|
// Create another new thread
|
|
std::thread thread_2(thread_2_func, nullptr);
|
|
|
|
// Wait for the threads to finish.
|
|
thread_1.join();
|
|
thread_2.join();
|
|
}
|