Có thể truyền một con trỏ tới một dấu int không, sau đó đưa nó trở lại một con trỏ? Tôi đang cố gắng để lưu trữ con trỏ đến một cấu trúc trong một biến pthread_t, nhưng tôi dường như không thể làm cho nó hoạt động. Dưới đây là một số đoạn mã của tôi (tôi đang tạo thư viện quản lý luồng người dùng cấp). Khi tôi cố gắng in ra tid của chủ đề nó mang lại cho tôi một số số rác dài.Lưu trữ địa chỉ của con trỏ trong một chữ ký không dấu trong C
Chỉnh sửa: Không sao, tôi đã làm việc đó.
tôi đã thay đổi
thread = (pthread_t) currentThread;
để
*thread = (pthread_t) currentThread;
đặn nó là một cái gì đó ngu ngốc như thế.
chương trình thử nghiệm:
pthread_t thread1;
pthread_t thread2;
pthread_create(&thread1, NULL, runner, NULL);
pthread_create(&thread2, NULL, runner, NULL);
pthread_join(&thread2, NULL);
Thư viện của tôi:
typedef struct queueItem
{
int tid;
ucontext_t context;
int caller;
struct queueItem *joiningOn;
struct queueItem *nextContext;
} queueItem;
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)
{
thread = (pthread_t) currentThread;
}
...
int pthread_join(pthread_t thread, void **retval)
{
queueItem *t = (queueItem *) thread;
if(runningContext->joiningOn != NULL) // Current thread is already waiting on another
return EINVAL;
if(t == NULL) // If thread to join on is invalid
return 0;
fprintf(stdout, "JOINEE: %d\n", t->tid); // Prints weird number
runningContext->caller = JOIN;
runningContext->joiningOn = t;
swapcontext(&(runningContext->context), &scheduleContext);
}
Tôi không hiểu - bạn đã xác định pthread_create trong thư viện của riêng bạn? Tại sao làm cho một tên xung đột với chức năng thông thường của tên đó ?? –
Đó là một dự án dành cho trường học. –
Nevermind, làm cho nó hoạt động. Đã chỉnh sửa bài đăng gốc của tôi. –