POSIX tråd der vågner hvert 20msec
Hejsa!Et spørgsmål angående tråd-schedulering under linux.
Jeg har brug for en POSIX-tråd der skal vågne hvert 20 ms (afbryde alle andre tråde) og sende en pakke over netværk. netværkskommunikationen har jeg selv styr på, men på tråd-området halter det lidt.
mit problem er meget lig http://www.embedded.com/showArticle.jhtml?articleID=9900812
men linket til koden virker ikke.
Takker
Mathias
ps. Følgende er koden jeg i øjeblikket bruger til at oprette og starte en tråd, alle med ens prioritet.
#include "../include/Thread.h" //klasse dekleration
#include "../include/ThreadException.h"
void * Thread::thread_function(void * parameter)
{
//parameter peger på et thread objekt
Thread * t = (Thread*)parameter;
//trådens run-metode
if( t != NULL)
t->run();
t->m_thread = 0;
return 0;
}
Thread::Thread( int priority_) : m_thread(0), priority(priority_)
{}
void Thread::waitForThread()
{
if(m_thread == 0)
{
throw ThreadException("Thread not running");
}
int err = pthread_join(m_thread,NULL);
if(err != 0)
{
switch(err)
{
case ESRCH: throw ThreadException("Not a valid thread ID.");
break;
case EINVAL: throw ThreadException("Another thread already waiting.");
break;
case EDEADLK: throw ThreadException("Thread trying to wait for itself.");
break;
}
}
}
void Thread::start()
{
if(m_thread != NULL)
{
throw ThreadException("Thread already running");
}
if(priority==1)
{
//??
int err = pthread_create(&m_thread, 0, thread_function, this);
}
else
{
//??
int err = pthread_create(&m_thread, 0, thread_function, this);
}
if(err != 0)
{
throw ThreadException("Unable to create thread");
}
}