terminate-thread 0.2.0

A simple terminatable thread implemented with pthread
docs.rs failed to build terminate-thread-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

What is this?

It's just a simple terminatable thread implement with pthread for rust

But Why?

Sometimes, I need to terminate a blocked thread. There is no way to

do it with the standard std::thread without putting into some Sync thing.

How to use it?

[dependencies]
terminate-thread = "0.1"

1. Terminate an infinite loop

use terminate_thread::Thread;

let thr = Thread::spawn(|| loop {
    // infinite loop in this thread
    println!("loop run");
    std::thread::sleep(std::time::Duration::from_secs(1));
});

std::thread::sleep(std::time::Duration::from_secs(1));

// Just terminate it
thr.terminate()

Not a good idea!

Terminate a running thread is ALWAYS A BAD IDEA!

The better way is to use something like std::sync::atomic::AtomicBool,

to give your thread a chance to return.

Tested Platform

  • Linux
  • macOS

It should work in any platform support pthread,

but the real world is sophisticated to make any promise.

Issues

  • Terminate the thread too quick panics. v0.2.0
use terminate_thread::Thread;
Thread::spawn(|| {}); // ← bus error
  • Terminate the job which panics. v0.2.0
use terminate_thread::Thread;
Thread::spawn(|| panic!());

let thread  = Thread::spawn(|| panic!());
thread.terminate();