Dropping RX buffer or Stopping usrp Sampling from cpp block

Hi All, i have problem with USRP2 & Gnuradio.

i’m creating a adaptive filtering gnu radio block which receives a
number of samples ( 2channel , usally 400,000 ) and process them in
order to removing static clutters from the sampled signals.

the problem is here, the block is very slow, it takes 4sec to compute
and produce results. so I’m finding a way to drop the unprocessed
samples while running adaptive filter. usally gnu radio will buffer the
samples and passing them by work function.

my problem is when when i received 400k samples and they are under
adaptive filter processing, gnu radio buffers the rest of them and when
the af processing ends up, gnu radio passes the next 400k samples which
is old as 6sec.

so i am finding a way to drop the samples which i doesn’t need them.
first i write a program to measure processing time and multiplying it by
sample rate and put it in global variable and drop the samples in next
run of work function, by this program i receive newest samples always
but the problem is manually dropping samples are time consuming. is
there any way to gnu radio do it for me ? i also used stop function for
usrp but it causes to crash my application.
I developed the app using gnu radio block howto and passing the usrp
object directly from python to my cpp block.

any idea?