67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_H_
|
|
#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_H_
|
|
|
|
#include "thread_wrapper.h"
|
|
#include "event_wrapper.h"
|
|
#include "critical_section_wrapper.h"
|
|
|
|
#include <windows.h>
|
|
|
|
namespace webrtc {
|
|
|
|
class ThreadWindows : public ThreadWrapper
|
|
{
|
|
public:
|
|
ThreadWindows(ThreadRunFunction func, ThreadObj obj, ThreadPriority prio,
|
|
const char* threadName);
|
|
virtual ~ThreadWindows();
|
|
|
|
virtual bool Start(unsigned int& id);
|
|
bool SetAffinity(const int* processorNumbers,
|
|
const unsigned int amountOfProcessors);
|
|
virtual bool Stop();
|
|
virtual void SetNotAlive();
|
|
|
|
static unsigned int WINAPI StartThread(LPVOID lpParameter);
|
|
|
|
virtual bool Shutdown();
|
|
|
|
protected:
|
|
virtual void Run();
|
|
|
|
private:
|
|
ThreadRunFunction _runFunction;
|
|
ThreadObj _obj;
|
|
|
|
bool _alive;
|
|
bool _dead;
|
|
|
|
// TODO (hellner)
|
|
// _doNotCloseHandle member seem pretty redundant. Should be able to remove
|
|
// it. Basically it should be fine to reclaim the handle when calling stop
|
|
// and in the destructor.
|
|
bool _doNotCloseHandle;
|
|
ThreadPriority _prio;
|
|
EventWrapper* _event;
|
|
CriticalSectionWrapper* _critsectStop;
|
|
|
|
HANDLE _thread;
|
|
unsigned int _id;
|
|
char _name[kThreadMaxNameLength];
|
|
bool _setThreadName;
|
|
|
|
};
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_THREAD_WINDOWS_H_
|