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

Reply via email to