Avatar billede nielsenmathias Nybegynder
16. marts 2005 - 10:42 Der er 2 kommentarer og
1 løsning

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");
    }
}
Avatar billede nielsenmathias Nybegynder
16. marts 2005 - 12:50 #1
evt kan et eksempel hvor den omtalte tråd kører med en væsentligt højere prioritet end de andre nok også gøre tricket
Mathias
Avatar billede nielsenmathias Nybegynder
17. marts 2005 - 09:38 #2
newer mind... usleep gør næsten tricket...
Avatar billede ferrari_brian Nybegynder
27. februar 2006 - 12:56 #3
nielsenmathias >> Du skrev her at du havde styr på netværksprogrammeringen i linux? er det noget du har fundet eller noget du selv har skrevet for de ting jeg lige har fundet virker ikke så overbevisende, da de ikke har kunnet compiles.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester