pthread_create with integer argument in C programming
When working with pthread_create
function in C programming, it is possible to pass arguments to the thread function using a void *
pointer. However, if the argument is an integer, there are a few extra steps that need to be taken to avoid issues with memory alignment.
One approach is to allocate memory for the integer argument using malloc
, and then pass the pointer to the allocated memory as the argument to pthread_create
. For example:
void *my_thread_function(void *arg) {
int my_arg = *(int *)arg;
// thread code here
}
int main() {
int my_integer_argument = 42;
int *arg_ptr = malloc(sizeof(int));
*arg_ptr = my_integer_argument;
pthread_t my_thread;
pthread_create(&my_thread, NULL, my_thread_function, arg_ptr);
// rest of the program
}
In the thread function, the integer argument is accessed by casting the void *
pointer to an int *
pointer, and then dereferencing it. This ensures that the integer is properly aligned in memory.
Remember to free the allocated memory once it is no longer needed:
free(arg_ptr);
By following these steps, passing integer arguments to pthread_create
can be done safely and without issues.
Leave a Reply
Related posts