Creating and using threads with npth in C:
```c
#include
#include
void *thread_function(void *arg) {
printf("Hello from thread %d\n", *(int *)arg);
return NULL;
}
int main() {
npth_init();
npth_t thread;
int thread_arg = 1;
npth_create(&thread, NULL, thread_function, &thread_arg);
npth_join(thread, NULL);
npth_kill(thread, 0);
return 0;
}
```
Using npth in a Python script:
```python
import ctypes
from ctypes import c_void_p, c_int
# Load the npth library
npth = ctypes.CDLL('libnpth.so')
# Define the thread function
NPTH_START_ROUTINE = ctypes.CFUNCTYPE(c_void_p, c_void_p)
def thread_function(arg):
print(f"Hello from thread {arg.contents.value}")
return None
thread_function_c = NPTH_START_ROUTINE(thread_function)
# Initialize npth
npth.npth_init()
# Create a thread
thread = c_void_p()
thread_arg = c_int(1)
npth.npth_create(ctypes.byref(thread), None, thread_function_c, ctypes.byref(thread_arg))
# Wait for the thread to finish
npth.npth_join(thread, None)
# Clean up
npth.npth_kill(thread, 0)
```