Are callbacks or signals available

Hi all,
I’m looking for a possibility to avoid the loop to get the samples by e.g:

while (1) {
int i = LMS_RecvStream(&streamId, buffer, bufersize, NULL, 1000);
do_something();
}

Is there is the possibility to call a function (asynchronously), e.g. if a buffer has been filled with 5000 samples. In the C ++ world there is e.g. sigc ++, something like this:

device->sampleBufferfull.connect (
sigc::ptr_fun(myClass::callupfuntion));

The only method I noticed would be LMS_Program() but I’m not sure if that’s the right approach.
I’m grateful for a little tip
Many greetings
Adi

Why not use separate thread for receive task?

the project in which i want to integrate my code was based exclusively on asynchronous processing and signals. The chief programmer would not accept such a poll loop.

In my project I use pthread and circular buffer. Separate thread receive data from LimeSDR and store them in circular buffer. If amount of data in buffer is enough for DSP task receive thread sends signal using pthread semaphore system. DSP thread wait for semaphore signal to perform task. All these processes are asyncronious and have no effect on main thread. By “poll loop” usually comes term “blocking call” which can be dangerous but in this case you depends on LimeSuite library in either variant.

Thank you for your information, which has brought me a step further. I think that’s one approach I could try.
mni 73s de Adi / DL1HRC :smiley: