Skip to content

AudioFile.Read(): CPU usage unnecessarily @ 100 % #30

@joonas-fi

Description

@joonas-fi

a.requestChunk(chunkIdx)

When chunk hasn't arrived from server yet, the consumer code that is calling Read() will get 0-byte successful reads at rapid pace, until server responds. This means that the consumer is calling the read as fast as it can, millions of times a second, manifesting in 100 % CPU usage. After I inserted a 100 ms sleep in after the line I quoted, CPU usage is back to normal.

This behaviour is discouraged by the Reader interface:

Implementations of Read are discouraged from returning a zero byte count with a nil error

Source

It doesn't say it directly, but it means that Read() is expected to block until it has data to return.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions