#include <pthread.h>
|
int
pthread_attr_init (pthread_attr_t *attrib); |
int
pthread_attr_destroy (pthread_attr_t *attrib); |
int
pthread_attr_setstacksize (pthread_attr_t *attrib, size_t stkSize); |
int
pthread_attr_getstacksize (const pthread_attr_t *attrib, size_t *stkSize); |
int
pthread_attr_setdetachstate (pthread_attr_t *attrib, int detState); |
int
pthread_attr_getdetachstate (const pthread_attr_t *attrib, int *detState); |
int
pthread_attr_setschedparam (pthread_attr_t *attrib, const struct sched_param *param); |
int
pthread_attr_getschedparam (const pthread_attr_t *attrib, struct sched_param *param); |
int
pthread_attr_setschedpolicy (pthread_attr_t *attrib, int policy); |
int
pthread_attr_getschedpolicy (const pthread_attr_t *attrib, int *policy); |
int
pthread_attr_setscope (pthread_attr_t *attrib, int conscope); |
int
pthread_attr_getscope (const pthread_attr_t *attrib, int *scope); |
The pthread_attr_init function initializes attrib with all the default thread attributes.
The pthread_attr_destroy function destroys attrib.
The pthread_attr_set* functions set the attribute that corresponds to each function name.
The pthread_attr_get* functions copy the value of the attribute that corresponds to each function name to the location pointed to by the second function parameter.
The pthread_attr_setschedpolicy supports only SCHED_RR.
pthread_join : Only one thread can join on one specific target thread.
[EINVAL] | |
Invalid value for attrib. | |
The pthread_attr_destroy function will fail if:
[EINVAL] | |
Invalid value for attrib. | |
The pthread_attr_setstacksize function will fail if:
[EINVAL] | |
stacksize is less than PTHREAD_STACK_MIN. or if the attrib is not initialized or if attrib is NULL | |
The pthread_attr_getstacksize function will fail if:
[EINVAL] | |
attrib is NULL or if the attrib is not initialized | |
The pthread_attr_setdetachstate function will fail if:
[EINVAL] | |
Invalid value for detachstate or if the attrib is not initialized or if attrib is NULL | |
The pthread_attr_getdetachstate function will fail if:
[EINVAL] | |
attrib is NULL or if the attrib is not initialized | |
The pthread_attr_setschedparam function will fail if:
[EINVAL] | |
Invalid value for param. or if the attrib is not initialized or if attrib is NULL | |
The pthread_attr_getschedparam function may fail if:
[EINVAL] | |
attrib does not refer to an initialized thread attribute or if attrib is NULL | |
The pthread_attr_setschedpolicy function will fail if:
[EINVAL] | |
Invalid value for policy. or if the attrib is not initialized or if attrib is NULL | |
The pthread_attr_getschedpolicy function may fail if:
[EINVAL] | |
attrib does not refer to an initialized thread attribute or if attrib is NULL | |
The pthread_attr_setscope function will fail if:
[EINVAL] | |
Invalid value for contentionscope or if the attrib is not initialized or if attrib is NULL | |
The pthread_attr_getscope function may fail if:
[EINVAL] | |
attrib does not refer to an initialized thread attribute or if attrib is NULL | |
/* ***************************************************** */ /* Example for pthread_attr_init & pthread_attr_destroy */ /* ***************************************************** */ pthread_attr_t new_attr; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { printf("Cannot initialize attribute object\n"); return -1; /* or exit */ } /* Create thread */ /* Destroy attribute */ if(pthread_attr_destroy(&new_attr) != 0) { perror("Cannot destroy the attribute object\n"); return -1; /* or exit*/ }
/* ***************************************************** */ /* Example for pthread_attr_getdetachstate */ /* ***************************************************** */ pthread_attr_t new_attr; int detach_state; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { printf("Cannot initialize attribute object\n"); return -1; } if(pthread_attr_getdetachstate(&new_attr, &detach_state) != 0) { printf("Cannot get the state\n"); return -1; } if(detach_state == PTHREAD_CREATE_JOINABLE) { printf("State is joinable \n"); } else { printf("State is detached \n"); } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_getschedpolicy */ /* ***************************************************** */ pthread_attr_t new_attr; int rc; int policy; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { printf("Cannot initialize attribute object\n"); return -1; /* or exit */ } rc = pthread_attr_getschedpolicy(new_attr, &policy); if( rc != 0) { printf("pthread_attr_getschedpolicy failed\n"); return -1; } switch(policy) { case SCHED_FIFO: printf("Scheduling policy: SCHED_FIFO 0); break; case SCHED_RR: printf("Scheduling policy: SCHED_RR \n"); break; case SCHED_OTHER: printf("Scheduling policy: SCHED_OTHER \n"); break; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_getscope */ /* ***************************************************** */ pthread_attr_t new_attr; int rc; int scope; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { printf("Cannot initialize attribute object\n"); return -1; /* or exit */ } rc = pthread_attr_getscope(new_attr, &scope); if( rc != 0) { printf("pthread_attr_getscope failed"); return -1; } switch(scope) { case SYSTEMSCOPE: printf("scope: System \n "); break; case PROCESSSCOPE: printf("scope: Process \n "); break; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_getstacksize */ /* ***************************************************** */ pthread_attr_t new_attr; size_t ssize; int rc; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { printf("Cannot initialize attribute object\n"); return -1; /* or exit */ } /* Get the default stack_size value */ rc = pthread_attr_getstacksize(&new_attr, &stack_size); if( rc != 0) { printf("pthread_attr_getstacksize failed"); return -1; } printf("ssize = %lu\n", stack_size); /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_getschedparam */ /* ***************************************************** */ pthread_attr_t attr; int rc=0; struct sched_param param; struct sched_param param2; rc = pthread_attr_init(&attr); if(rc != 0) { printf("pthread_attr_init failed\n"); return -1; } param.sched_priority = 50; rc = pthread_attr_setschedparam(&attr, & param); if(rc != 0) { printf("pthread_attr_setschedparam failed\n"); return -1; } rc = pthread_attr_getschedparam(&attr, & param2); if(rc != 0) { printf("pthread_attr_getschedparam failed\n"); return -1; } /* priority will be stored in param2.sched_priority */ /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_setdetachstate */ /* ***************************************************** */ pthread_attr_t new_attr; int detach_state; /* Initialize attribute */ if(pthread_attr_init(&new_attr) != 0) { perror("Cannot initialize attribute object\n"); return -1; } /* Set the attribute object to PTHREAD_CREATE_JOINABLE. */ if(pthread_attr_setdetachstate(&new_attr, PTHREAD_CREATE_JOINABLE) != 0) { perror("Error in pthread_attr_setdetachstate()\n"); return -1; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_setschedparam */ /* ***************************************************** */ pthread_attr_t attr; int rc=0; struct sched_param param; rc = pthread_attr_init(&attr); if(rc != 0) { printf("pthread_attr_init failed\n"); return -1; } param.sched_priority = 50; rc = pthread_attr_setschedparam(&attr, & param); if(rc != 0) { printf("pthread_attr_setschedparam failed\n"); return -1; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_setschedpolicy */ /* ***************************************************** */ pthread_attr_t attr; int rc; int policy = SCHED_RR; if(pthread_attr_init(&attr) != 0) { printf("Error on pthread_attr_init()\n"); return -1; } if((rc=pthread_attr_setschedpolicy(&attr,policy)) != 0) { printf("Error on pthread_attr_setschedpolicy()\t rc=%d\n", rc); return -1; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_setstacksize */ /* ***************************************************** */ pthread_attr_t attr; int rc; int policy = SCHED_RR; if(pthread_attr_init(&attr) != 0) { printf("Error on pthread_attr_init()\n"); return -1; } if((rc=pthread_attr_setstacksize(&attr,8192)) != 0) { printf("Error on pthread_attr_setstacksize()\t rc=%d\n", rc); return -1; } /* Create thread */ /* Destroy attribute */
/* ***************************************************** */ /* Example for pthread_attr_setscope */ /* ***************************************************** */ pthread_attr_t attr; int rc; /* Initialize attr */ rc = pthread_attr_init(&attr); if( rc != 0) { perror("pthread_attr_init failed"); return -1; } rc = pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); if (rc != 0 ) { perror("PTHREAD_SCOPE_SYSTEM is not supported"); return -1; } /* Create thread */ /* Destroy attribute */
© 2005-2007 Nokia |