Oh that is different I assumed each core was simply fetching the next highest priority ready task when it had expended it's runtime on current task and if no task available going into it's idle task.
I was assuming all I had to do was deal with the situation that both cores wanted to grab a new task at same time which is same situation when they both want to go for same hardware and you need a sync primitive on hardware access.
I can see your suggested way is easier to implement on the task queue but it would appear you would either
1.) Waste a lot of time on second core when it finished tasks early because it has gone into a sleep or IO access wait
or
2.) The second core has to send an interrupt to first core to tell it needs a new task loaded in early task finish.
Either way the "master core" is getting load put on it far more than the freeloader second core and conceptually it looks harder to implement than just two free running cores. The free running case looks easier in my mind you only have one clash when they both want to play with task queue. I was thinking of a lock so only one core at a time could enter to play with task queue, other than that the cores run in there own space and don't need to know about each other.
Hmmm need to think about that and probably have a play.
I was assuming all I had to do was deal with the situation that both cores wanted to grab a new task at same time which is same situation when they both want to go for same hardware and you need a sync primitive on hardware access.
I can see your suggested way is easier to implement on the task queue but it would appear you would either
1.) Waste a lot of time on second core when it finished tasks early because it has gone into a sleep or IO access wait
or
2.) The second core has to send an interrupt to first core to tell it needs a new task loaded in early task finish.
Either way the "master core" is getting load put on it far more than the freeloader second core and conceptually it looks harder to implement than just two free running cores. The free running case looks easier in my mind you only have one clash when they both want to play with task queue. I was thinking of a lock so only one core at a time could enter to play with task queue, other than that the cores run in there own space and don't need to know about each other.
Hmmm need to think about that and probably have a play.
Statistics: Posted by LdB — Wed Nov 12, 2025 11:40 pm