Tesseract
3.02
|
The SVSync class provides functionality for Thread & Process Creation. More...
#include <svutil.h>
Static Public Member Functions | |
static void | StartThread (void *(*func)(void *), void *arg) |
Create new thread. | |
static void | ExitThread () |
Signals a thread to exit. | |
static void | StartProcess (const char *executable, const char *args) |
Starts a new process. |
The SVSync class provides functionality for Thread & Process Creation.
void SVSync::ExitThread | ( | ) | [static] |
Signals a thread to exit.
Definition at line 66 of file svutil.cpp.
{ #ifdef _WIN32 // ExitThread(0); #else pthread_exit(0); #endif }
void SVSync::StartProcess | ( | const char * | executable, |
const char * | args | ||
) | [static] |
Starts a new process.
Definition at line 75 of file svutil.cpp.
{ #ifdef _WIN32 std::string proc; proc.append(executable); proc.append(" "); proc.append(args); std::cout << "Starting " << proc << std::endl; STARTUPINFO start_info; PROCESS_INFORMATION proc_info; GetStartupInfo(&start_info); if (!CreateProcess(NULL, const_cast<char*>(proc.c_str()), NULL, NULL, FALSE, CREATE_NO_WINDOW | DETACHED_PROCESS, NULL, NULL, &start_info, &proc_info)) return; #else int pid = fork(); if (pid != 0) { // The father process returns } else { #ifdef __linux__ // Make sure the java process terminates on exit, since its // broken socket detection seems to be useless. prctl(PR_SET_PDEATHSIG, 2, 0, 0, 0); #endif char* mutable_args = strdup(args); int argc = 1; for (int i = 0; mutable_args[i]; ++i) { if (mutable_args[i] == ' ') { ++argc; } } char** argv = new char*[argc + 2]; argv[0] = strdup(executable); argv[1] = mutable_args; argc = 2; bool inquote = false; for (int i = 0; mutable_args[i]; ++i) { if (!inquote && mutable_args[i] == ' ') { mutable_args[i] = '\0'; argv[argc++] = mutable_args + i + 1; } else if (mutable_args[i] == '"') { inquote = !inquote; mutable_args[i] = ' '; } } argv[argc] = NULL; execvp(executable, argv); } #endif }
void SVSync::StartThread | ( | void *(*)(void *) | func, |
void * | arg | ||
) | [static] |
Create new thread.
Definition at line 175 of file svutil.cpp.
{ #ifdef _WIN32 LPTHREAD_START_ROUTINE f = (LPTHREAD_START_ROUTINE) func; DWORD threadid; HANDLE newthread = CreateThread( NULL, // default security attributes 0, // use default stack size f, // thread function arg, // argument to thread function 0, // use default creation flags &threadid); // returns the thread identifier #else pthread_t helper; pthread_create(&helper, NULL, func, arg); #endif }