pthreads - fragen und probleme



  • hallo liebe community...

    ich hätte da mal eine frage bezüglich threads unter linux mit c. ich habe mich mal herangewagt und bin gleichzeitig auf probleme gestoßen. ich möchte mittels curser-taste ein bild ein paar sekunden nach eingabe in einen bereich zeichnen lassen. aber nur wenn in der kurzen wartezeit(usleep) nicht nochmal die taste gedrückt wird. das heist falls der thread schon aktiv ist soll er ihn canceln...außer der thread_status ist schon auf 2...dann soll er ihn durchlaufen lassen.

    nun meine frage(n): wenn ich denn thread cancel dann frist er sich in den speicher. bei jedem canceln. kann man das irgendwie verhindern?

    meine 2. frage...ich hab das mit dem threadstatus mit einer int-variable gelöst...gibt es da andere(saubere) möglichkeiten?

    würd mich echt freuen wenn mir da einer helfen könnte...und über beispiele würd ich mich natürlich auch sehr freuen.

    #include <pthread.h>
    .
    .
    .
    pthread_t t1;
    int thread_status = 0;
    
    static void
    thread1(void)
    {
      pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL);
      pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
    
      thread_status = 1;
    
      usleep(150000);
    
      thread_status = 2;
    
      //zeichne bild//
    
      thread_status = 0;
    
      pthread_exit((void *) 0);
    }
    
    static void
    key_movielist_down1 (void)
    {
      if(thread_do == 1){pthread_cancel (t1);}
      else if(thread_do == 2){pthread_join(t1, NULL);}		
      pthread_create(&t1, NULL, (void *)&thread1, (void *)"Thread 1");
    }
    

    ich danke euch schonmal im voraus.

    gruß
    gast


Log in to reply