use crate::{context::CudaContext, driver::CuStream};
#[derive(Debug)]
pub(crate) struct CudaStream {
pub(crate) context: CudaContext,
pub(crate) stream: CuStream,
}
impl Drop for CudaStream {
fn drop(&mut self) {
if !self.stream.is_null() {
let destroy_result = self.context.inner.with_current_stateful_operation(|| {
self.context
.inner
.driver
.check("cuStreamDestroy_v2", unsafe {
(self.context.inner.driver.cu_stream_destroy)(self.stream)
})
});
if destroy_result.is_err() {
std::mem::forget(self.context.clone());
}
}
}
}
unsafe impl Send for CudaStream {}