1

add name + running (nice_kill) to threads

This commit is contained in:
2022-07-22 21:38:43 +02:00
parent 3c6f6dd009
commit 16d7ae071d
2 changed files with 13 additions and 7 deletions

View File

@ -107,8 +107,8 @@ void kickoff(Thread* object) {
* Parameter: * * Parameter: *
* stack Stack für die neue Koroutine * * stack Stack für die neue Koroutine *
*****************************************************************************/ *****************************************************************************/
Thread::Thread() : stack(new unsigned int[1024]), tid(ThreadCnt++) { Thread::Thread(char* name) : name(name), stack(new unsigned int[1024]), tid(ThreadCnt++) {
Thread::log << INFO << "Initialized thread with ID: " << this->tid << endl; Thread::log << INFO << "Initialized thread with ID: " << this->tid << " (" << name << ")" << endl;
Thread_init(&regs, stack + 1024, kickoff, this); // Stack grows from top to bottom Thread_init(&regs, stack + 1024, kickoff, this); // Stack grows from top to bottom
} }

View File

@ -39,15 +39,18 @@ private:
struct ThreadState regs; struct ThreadState regs;
protected: protected:
Thread(char* name);
static Logger log; static Logger log;
public: bool running = true; // For soft exit, if thread uses infinite loop inside run(), use this as condition
char* name; // For logging
unsigned int tid; // Thread-ID (wird im Konstruktor vergeben) unsigned int tid; // Thread-ID (wird im Konstruktor vergeben)
friend class Scheduler; // Scheduler can access tid
Thread(); public:
virtual ~Thread() { virtual ~Thread() {
log << INFO << "Uninitialized thread, ID: " << dec << this->tid << endl; log << INFO << "Uninitialized thread, ID: " << dec << this->tid << " (" << name << ")" << endl;
delete[] this->stack; delete[] this->stack;
} }
@ -57,6 +60,9 @@ public:
// Umschalten auf Thread 'next' // Umschalten auf Thread 'next'
void switchTo(Thread& next); void switchTo(Thread& next);
// Ask thread to terminate itself
void suicide() { running = false; }
// Methode des Threads, muss in Sub-Klasse implementiert werden // Methode des Threads, muss in Sub-Klasse implementiert werden
virtual void run() = 0; virtual void run() = 0;
}; };