mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 21:17:45 +00:00
Kernel+LibPthread: Implement pthread_join()
It's now possible to block until another thread in the same process has exited. We can also retrieve its exit value, which is whatever value it passed to pthread_exit(). :^)
This commit is contained in:
parent
c6a8b95643
commit
69efa3f630
9 changed files with 117 additions and 5 deletions
|
@ -19,7 +19,7 @@ clean:
|
|||
|
||||
$(APPS) : % : %.o $(OBJS)
|
||||
@echo "LD $@"
|
||||
@$(LD) -o $@ $(LDFLAGS) $< -lc -lhtml -lgui -ldraw -laudio -lipc -lthread -lcore -lpcidb -lmarkdown
|
||||
@$(LD) -o $@ $(LDFLAGS) $< -lc -lhtml -lgui -ldraw -laudio -lipc -lthread -lcore -lpcidb -lmarkdown -lpthread
|
||||
|
||||
%.o: %.cpp
|
||||
@echo "CXX $<"
|
||||
|
|
25
Userland/tt.cpp
Normal file
25
Userland/tt.cpp
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int, char**)
|
||||
{
|
||||
printf("Hello from the first thread!\n");
|
||||
pthread_t thread_id;
|
||||
int rc = pthread_create(&thread_id, nullptr, [](void*) -> void* {
|
||||
printf("Hi there, from the second thread!\n");
|
||||
pthread_exit((void*)0xDEADBEEF);
|
||||
return nullptr;
|
||||
}, nullptr);
|
||||
if (rc < 0) {
|
||||
perror("pthread_create");
|
||||
return 1;
|
||||
}
|
||||
void* retval;
|
||||
rc = pthread_join(thread_id, &retval);
|
||||
if (rc < 0) {
|
||||
perror("pthread_join");
|
||||
return 1;
|
||||
}
|
||||
printf("Okay, joined and got retval=%p\n", retval);
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue