- Mitglied seit
- 2 Jun 2007
- Beiträge
- 63
- Punkte für Reaktionen
- 0
- Punkte
- 6
Hi,
Ich bin grad ein wenig am verzweifeln an threadprogrammierung für eine
Fritzbox(7170)-Anwendung.
Ich habe folgenden Code:
hier mein soweit abgespeckter code, dass sich es nachvollziehen lässt:
unter windows läuft er wie erwartet.
ich benutze visual studio 2008 express mit einer windows pthread
bibliothek (die leider die sleep funktionen nicht kennt, deswegen die
unterscheidung)
auf der Fritzbox läuft das ganze dann so, dass ich nur die ausschriften
der main-loop bekomme.
root@fritz:/var/media/ftp/uStor11# ./helloworld
enter main
started thread
iam the main loop
iam the main loop
iam the main loop
iam the main loop
kann mir hier jemand weiterhelfen?
Ich hatte das zuerst hier (https://www.mikrocontroller.net/topic/248654#2548102) gepostet , da ich da normalerweise unterwegs bin, aber hier sind eher die Spezialisten für die Fritzbox versammelt
unter einem normalen Linux scheint das ganze auch zu laufen,
Tim T. schrieb im Beitrag https://www.mikrocontroller.net/topic/248654#2548129 :
> Könnte ein Problem im Threading des Linuxkernels auf deiner Fritzbox
> sein, auf 3 verschiedenen Linuxsystemen (Desktop, Atom, NAS) lies sich
> dein Code wie zu erwarten Ausführen.
MfG
Vlad
Ich bin grad ein wenig am verzweifeln an threadprogrammierung für eine
Fritzbox(7170)-Anwendung.
Ich habe folgenden Code:
hier mein soweit abgespeckter code, dass sich es nachvollziehen lässt:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <stdbool.h>
#include <time.h>
#include <pthread.h>
#ifdef _WIN32
# include <windows.h>
# define sleepMs(x) do{Sleep(x);}while(0)
#else
# include <unistd.h>
static void sleepMs(uint32_t ms)
{
struct timespec sleepTime;
struct timespec remainingSleepTime;
sleepTime.tv_sec = ms/1000;
sleepTime.tv_nsec = (ms%1000)*1000000;
nanosleep(&sleepTime,&remainingSleepTime);
}
#endif
void* receiveThread(void* arg)
{
while(23){
printf("iam the thread loop\n");
sleepMs(2000);
}
}
int main(void)
{
pthread_t thread = {0};
int rc;
printf("enter main\n");
rc = pthread_create( &thread, NULL, &receiveThread, NULL);
if(rc){
perror("could not create THread\n");
}
printf("started thread\n");
while(1)
{
printf("iam the main loop\n");
sleepMs(1000);
}
return EXIT_SUCCESS;
}
unter windows läuft er wie erwartet.
ich benutze visual studio 2008 express mit einer windows pthread
bibliothek (die leider die sleep funktionen nicht kennt, deswegen die
unterscheidung)
auf der Fritzbox läuft das ganze dann so, dass ich nur die ausschriften
der main-loop bekomme.
root@fritz:/var/media/ftp/uStor11# ./helloworld
enter main
started thread
iam the main loop
iam the main loop
iam the main loop
iam the main loop
kann mir hier jemand weiterhelfen?
Ich hatte das zuerst hier (https://www.mikrocontroller.net/topic/248654#2548102) gepostet , da ich da normalerweise unterwegs bin, aber hier sind eher die Spezialisten für die Fritzbox versammelt
unter einem normalen Linux scheint das ganze auch zu laufen,
Tim T. schrieb im Beitrag https://www.mikrocontroller.net/topic/248654#2548129 :
> Könnte ein Problem im Threading des Linuxkernels auf deiner Fritzbox
> sein, auf 3 verschiedenen Linuxsystemen (Desktop, Atom, NAS) lies sich
> dein Code wie zu erwarten Ausführen.
MfG
Vlad
Zuletzt bearbeitet: