Hi Beyers, sorry for the delay,
On current Click, timers run on any CPU, so synchronization would be required
here. The simplest change that would avoid synchronization is this: Add
another task to your SomeElement, and have the timer *schedule the task*.
class SomeElement { ...
bool run_task();
...
Task _task;
Timer _timer;
};
SomeElement::SomeElement() ...
: _task(this), _timer(&_task)
{
}
bool SomeElement::run_task()
{
... code that used to be in run_timer() ...
}
...
StaticThreadSched(fd 0, deq 1, the_SomeElement 1);
Make sense?
Alternately I could imagine allowing StaticTHreadSched to specify the CPU on
which ALL timers would always run.
Eddie
Beyers Cronje wrote:
> Hi guys,
>
> When using multithreaded click with StaticThreadSched can one be guaranteed
> on what cpu a timer will be run?
>
> As a simple example, would it be required to provide synchronization for
> element SomeElement that has a Timer that modifies mutable data inside
> SomeElement given the following click configuration:
>
> fd::FromDevice(eth0) -> q::Queue;
> q -> deq::UnQueue -> SomeElement -> Discard;
> StaticThreadSched(fd 0, deq 1);
>
> Thanks
>
> Beyers
> _______________________________________________
> click mailing list
> [email protected]
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click