Skip to content

SpinToNextSequence might cause excessive OS calls for small sequences. #11

@diputssi

Description

@diputssi

Might not be the best solution, but since I am using smaller sequence sizes and this could add significant os calls and context switches, it might be prudent to do something like this. 2 new 'spin' lines to SpinToNextSequence().

private void SpinToNextSequence()
{
    var spin = new SpinWait();   // create spin object
    var time = GetTime();

    while (time == _previousTime && _sequence >= _maxSequence)
    {
        spin.SpinOnce();    // spin locally in user space instead of forcing excess os calls to get next time.
        // Or maybe Thread.Sleep(0)?
        time = GetTime();
    }
    _sequence = time == _previousTime ? (short)(_sequence + 1) : (short)0;
    _previousTime = time;
 }

@mschuler

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions