Hi,
I think the issue is not with using resource manager thread pool library. I have attached another sample code.
Please check it. Here i have tried to lock the main thread and TestThread() thread to CPU 1. But not working.
Please help
[code]#include <pthread.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <sched.h>
#include <time.h>
#include <stdio.h>
#include <sys/siginfo.h>
#include <sys/neutrino.h>
#include <pthread.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <sys/neutrino.h>
#include <mqueue.h>
#include <atomic.h>
#include <sys/iofunc.h>
#include <sys/dispatch.h>
#include <sys/timeb.h>
#include <stdlib.h>
void* TestThread();
int main(int argc, char *argv[])
{
pthread_t thid1;
pthread_create(&thid1, NULL, (void*)&TestThread, NULL);
struct sigevent t_timer_event;
struct itimerspec t_timer_config;
timer_t pt_timer_id;
name_attach_t* pt_evnt_rx_chid = NULL;
struct _pulse t_pulse_evnt;
int32_t s32_timeout_coid = -1;
uint8_t mask = 1;
ThreadCtl(_NTO_TCTL_RUNMASK, &mask);
pt_evnt_rx_chid = name_attach(NULL, "Test1", 0);
if (NULL == pt_evnt_rx_chid)
{
printf("Error\n");
}
s32_timeout_coid = name_open("Test1", 0);
if (s32_timeout_coid == -1)
{
printf("Error\n");
}
SIGEV_PULSE_INIT(
&t_timer_event,
s32_timeout_coid,
10,
5,
0 );
if (-1 == timer_create(CLOCK_REALTIME, &t_timer_event, &pt_timer_id))
{
printf("Error\n");
}
t_timer_config.it_interval.tv_sec = 1;
t_timer_config.it_interval.tv_nsec = 0;
t_timer_config.it_value.tv_sec = 1;
t_timer_config.it_value.tv_nsec = 0;
timer_settime(pt_timer_id, NULL, &t_timer_config, NULL);
while(1)
{
if (0 == MsgReceivePulse(pt_evnt_rx_chid->chid, &t_pulse_evnt, sizeof(struct _pulse), NULL))
{
if (5 == t_pulse_evnt.code)
{
printf("Got pulse, Need to do something here\n");
}
}
}
pthread_join(thid1, NULL);
}
void* TestThread()
{
struct sigevent t_timer_event;
struct itimerspec t_timer_config;
timer_t pt_timer_id;
name_attach_t* pt_evnt_rx_chid = NULL;
struct _pulse t_pulse_evnt;
int32_t s32_timeout_coid = -1;
uint8_t mask = 1;
ThreadCtl(_NTO_TCTL_RUNMASK, &mask);
pt_evnt_rx_chid = name_attach(NULL, "Test", 0);
if (NULL == pt_evnt_rx_chid)
{
printf("Error\n");
}
s32_timeout_coid = name_open("Test", 0);
if (s32_timeout_coid == -1)
{
printf("Error\n");
}
SIGEV_PULSE_INIT(
&t_timer_event,
s32_timeout_coid,
10,
5,
0 );
if (-1 == timer_create(CLOCK_REALTIME, &t_timer_event, &pt_timer_id))
{
printf("Error\n");
}
t_timer_config.it_interval.tv_sec = 1;
t_timer_config.it_interval.tv_nsec = 0;
t_timer_config.it_value.tv_sec = 1;
t_timer_config.it_value.tv_nsec = 0;
timer_settime(pt_timer_id, NULL, &t_timer_config, NULL);
while(1)
{
if (0 == MsgReceivePulse(pt_evnt_rx_chid->chid, &t_pulse_evnt, sizeof(struct _pulse), NULL))
{
if (5 == t_pulse_evnt.code)
{
printf("Got pulse, Need to do something here\n");
}
}
}
pthread_exit(NULL);
}
[/code]
Regards,
hello