本文整理汇总了C++中errExitEN函数的典型用法代码示例。如果您正苦于以下问题:C++ errExitEN函数的具体用法?C++ errExitEN怎么用?C++ errExitEN使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了errExitEN函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int
main(int argc, char *argv[])
{
pthread_t t1, t2;
int loops, s;
loops = (argc > 1) ? getInt(argv[1], GN_GT_0, "num-loops") : 10000000;
/* Initialize a semaphore with the value 1 */
if (sem_init(&sem, 0, 1) == -1)
errExit("sem_init");
/* Create two threads that increment 'glob' */
s = pthread_create(&t1, NULL, threadFunc, &loops);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_create(&t2, NULL, threadFunc, &loops);
if (s != 0)
errExitEN(s, "pthread_create");
/* Wait for threads to terminate */
s = pthread_join(t1, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
s = pthread_join(t2, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
printf("glob = %d\n", glob);
exit(EXIT_SUCCESS);
}
示例2: threadFunc
static void *
threadFunc(void *arg)
{
int cnt = atoi((char *) arg);
int s, j;
for (j = 0; j < cnt; j++) {
sleep(1);
/* Code to produce a unit omitted */
s = pthread_mutex_lock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
avail++; /* Let consumer know another unit is available */
s = pthread_mutex_unlock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_unlock");
s = pthread_cond_signal(&cond); /* Wake sleeping consumer */
if (s != 0)
errExitEN(s, "pthread_cond_signal");
}
return NULL;
}
示例3: pthread_mutex_lock
LogQueue& LogQueue::pop(std::pair<int,Msg> &log)
{
//add mutex
int s = pthread_mutex_lock(&m_mutex);
if(s != 0)
errExitEN(s,"pthread_mutex_lock");
while(m_logs.empty())
{
// std::cout << "-------wait------ " << std::endl;
s = pthread_cond_wait(&m_cond,&m_mutex);
if(s != 0)
{
// std::cout << "---------s!=0------" <<std::endl;
errExitEN(s,"pthread_cond_wait");
}
}
log = *(m_logs.begin());
m_logs.erase(m_logs.begin());
usleep(1000);
s = pthread_mutex_unlock(&m_mutex);
// std::cout << "--------pop queue-------" << std::endl;
if(s != 0)
errExitEN(s,"pthread_mutex_unlock");
return *this;
}
示例4: main
int
main(int argc, char *argv[])
{
pthread_t t1, t2;
int s;
/* Create two threads, both of which will call one_time_init() */
s = pthread_create(&t1, NULL, threadFunc, (void *) 1);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_create(&t2, NULL, threadFunc, (void *) 2);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_join(t1, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
printf("First thread returned\n");
s = pthread_join(t2, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
printf("Second thread returned\n");
exit(EXIT_SUCCESS);
}
示例5: strerror
char *
strerror(int err)
{
int s;
char *buf;
/* Make first caller allocate key for thread-specific data */
s = pthread_once(&once, createKey);
if (s != 0)
errExitEN(s, "pthread_once");
buf = pthread_getspecific(strerrorKey);
if (buf == NULL) { /* If first call from this thread, allocate
buffer for thread, and save its location */
buf = malloc(MAX_ERROR_LEN);
if (buf == NULL)
errExit("malloc");
s = pthread_setspecific(strerrorKey, buf);
if (s != 0)
errExitEN(s, "pthread_setspecific");
}
if (err < 0 || err >= _sys_nerr || _sys_errlist[err] == NULL) {
snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
} else {
strncpy(buf, _sys_errlist[err], MAX_ERROR_LEN - 1);
buf[MAX_ERROR_LEN - 1] = '\0'; /* Ensure null termination */
}
return buf;
}
示例6: threadFunc
static void * /* start function for threads */
threadFunc(void *arg)
{
int idx = *((int *) arg);
int s;
sleep(thread[idx].sleepTime); /* Simulate doing some work */
printf("Thread %d terminating\n", idx);
s = pthread_mutex_lock(&threadMutex);
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
numUnjoined++;
thread[idx].state = TS_TERMINATED;
s = pthread_mutex_unlock(&threadMutex);
if (s != 0)
errExitEN(s, "pthread_mutex_unlock");
s = pthread_cond_signal(&threadDied);
if (s != 0)
errExitEN(s, "pthread_cond_signal");
return NULL;
}
示例7: main
int
main(int argc, char *argv[])
{
pthread_t t1, t2;
int loops, s;
loops = (argc > 1) ? getInt(argv[1], GN_GT_0, "num-loops") : 10000000;
s = pthread_create(&t1, NULL, threadFunc, &loops);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_create(&t2, NULL, threadFunc, &loops);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_join(t1, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
s = pthread_join(t2, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
printf("glob = %d\n", glob);
exit(EXIT_SUCCESS);
}
示例8: main
int
main(int argc, char *argv[])
{
pthread_t thr;
pthread_attr_t attr;
int s;
s = pthread_attr_init(&attr); /* Assigns default values */
if (s != 0)
errExitEN(s, "pthread_attr_init");
s = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if (s != 0)
errExitEN(s, "pthread_attr_setdetachstate");
s = pthread_create(&thr, &attr, threadFunc, (void *) 1);
if (s != 0)
errExitEN(s, "pthread_create");
s = pthread_attr_destroy(&attr); /* No longer needed */
if (s != 0)
errExitEN(s, "pthread_attr_destroy");
s = pthread_join(thr, NULL);
if (s != 0)
errExitEN(s, "pthread_join failed as expected");
exit(EXIT_SUCCESS);
}
示例9: threadFunc
static void *
threadFunc(void *arg)
{
int s;
void *buf = NULL; /* Buffer allocated by thread */
buf = malloc(0x10000); /* Not a cancellation point */
printf("thread: allocated memory at %p\n", buf);
s = pthread_mutex_lock(&mtx); /* Not a cancellation point */
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
pthread_cleanup_push(cleanupHandler, buf);
while (glob == 0) {
s = pthread_cond_wait(&cond, &mtx); /* A cancellation point */
if (s != 0)
errExitEN(s, "pthread_cond_wait");
}
printf("thread: condition wait loop completed\n");
pthread_cleanup_pop(1); /* Executes cleanup handler */
return NULL;
}
示例10: threadFunc
static void /* Thread notification function */
threadFunc(union sigval sv)
{
timer_t *tidptr;
int s;
tidptr = sv.sival_ptr;
printf("[%s] Thread notify\n", currTime("%T"));
printf(" timer ID=%ld\n", (long) *tidptr);
printf(" timer_getoverrun()=%d\n", timer_getoverrun(*tidptr));
/* Increment counter variable shared with main thread and signal
condition variable to notify main thread of the change. */
s = pthread_mutex_lock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
expireCnt += 1 + timer_getoverrun(*tidptr);
s = pthread_mutex_unlock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_unlock");
s = pthread_cond_signal(&cond);
if (s != 0)
errExitEN(s, "pthread_cond_signal");
}
示例11: main
int
main(int argc, char *argv[])
{
pthread_t thr;
int s;
void *res;
s = pthread_create(&thr, NULL, threadFunc, NULL);
if (s != 0)
errExitEN(s, "pthread_create");
sleep(3); /* Allow new thread to run a while */
s = pthread_cancel(thr);
if (s != 0)
errExitEN(s, "pthread_cancel");
s = pthread_join(thr, &res);
if (s != 0)
errExitEN(s, "pthread_join");
if (res == PTHREAD_CANCELED)
printf("Thread was canceled\n");
else
printf("Thread was not canceled (should not happen!)\n");
exit(EXIT_SUCCESS);
}
示例12: malloc
static void *threadFunc(void *arg)
{
int s;
void *buf = NULL; // buffer allocated by thread
buf = malloc(0x10000); // not a cancellation point
printf("thread: allocated memory at %p\n", buf);
s = pthread_mutex_lock(&mtx); // not a cancellation point
if (s != 0) {
errExitEN(s, "pthread_mutex_lock");
}
pthread_cleanup_push(cleanupHandler, buf);
while (glob == 0) {
s = pthread_cond_wait(&cond, &mtx); // a cancellation point
if (s != 0) {
errExitEN(s, "pthread_cond_wait");
}
}
printf("thread: condition wait loop completed\n");
pthread_cleanup_pop(1);
// does not work because it's a macro with braces
// if (1) {
// pthread_cleanup_pop(1);
// }
return NULL;
}
示例13: main
int
main(int argc, char *argv[])
{
pthread_t tid;
int s, j;
int totRequired; /* Total number of units that all
threads will produce */
int numConsumed; /* Total units so far consumed */
Boolean done;
time_t t;
t = time(NULL);
/* Create all threads */
totRequired = 0;
for (j = 1; j < argc; j++) {
totRequired += atoi(argv[j]);
s = pthread_create(&tid, NULL, threadFunc, argv[j]);
if (s != 0)
errExitEN(s, "pthread_create");
}
/* Use a polling loop to check for available units */
numConsumed = 0;
done = FALSE;
for (;;) {
s = pthread_mutex_lock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
while (avail > 0) { /* Consume all available units */
/* Do something with produced unit */
numConsumed ++;
avail--;
printf("T=%ld: numConsumed=%d\n", (long) (time(NULL) - t),
numConsumed);
done = numConsumed >= totRequired;
}
s = pthread_mutex_unlock(&mtx);
if (s != 0)
errExitEN(s, "pthread_mutex_unlock");
if (done)
break;
/* Perhaps do other work here that does not require mutex lock */
}
exit(EXIT_SUCCESS);
}
示例14: main
int
main(int argc, char *argv[])
{
int s, idx;
if (argc < 2 || strcmp(argv[1], "--help") == 0)
usageErr("%s nsecs...\n", argv[0]);
thread = calloc(argc - 1, sizeof(*thread));
if (thread == NULL)
errExit("calloc");
/* Create all threads */
for (idx = 0; idx < argc - 1; idx++) {
thread[idx].sleepTime = getInt(argv[idx + 1], GN_NONNEG, NULL);
thread[idx].state = TS_ALIVE;
s = pthread_create(&thread[idx].tid, NULL, threadFunc, &idx);
if (s != 0)
errExitEN(s, "pthread_create");
}
totThreads = argc - 1;
numLive = totThreads;
/* Join with terminated threads */
while (numLive > 0) {
s = pthread_mutex_lock(&threadMutex);
if (s != 0)
errExitEN(s, "pthread_mutex_lock");
while (numUnjoined == 0) {
s = pthread_cond_wait(&threadDied, &threadMutex);
if (s != 0)
errExitEN(s, "pthread_cond_wait");
}
for (idx = 0; idx < totThreads; idx++) {
if (thread[idx].state == TS_TERMINATED){
s = pthread_join(thread[idx].tid, NULL);
if (s != 0)
errExitEN(s, "pthread_join");
thread[idx].state = TS_JOINED;
numLive--;
numUnjoined--;
printf("Reaped thread %d (numLive=%d)\n", idx, numLive);
}
}
s = pthread_mutex_unlock(&threadMutex);
if (s != 0)
errExitEN(s, "pthread_mutex_unlock");
}
exit(EXIT_SUCCESS);
}
示例15: main
int
main(int argc, char *argv[])
{
int s, numThreads;
long threadNum;
pthread_t *tid;
if (argc != 3 || strcmp(argv[1], "--help") == 0)
usageErr("%s num-barriers num-threads\n", argv[0]);
numBarriers = atoi(argv[1]);
numThreads = atoi(argv[2]);
/* Allocate array to hold thread IDs */
tid = calloc(sizeof(pthread_t), numThreads);
if (tid == NULL)
errExit("calloc");
/* Initialize the barrier. The final argument specifies the
number of threads that must call pthread_barrier_wait()
before any thread will unblock from that call. */
s = pthread_barrier_init(&barrier, NULL, numThreads);
if (s != 0)
errExitEN(s, "pthread_barrier_init");
/* Create 'numThreads' threads */
for (threadNum = 0; threadNum < numThreads; threadNum++) {
s = pthread_create(&tid[threadNum], NULL, threadFunc,
(void *) threadNum);
if (s != 0)
errExitEN(s, "pthread_create");
}
/* Each thread prints a start-up message. We briefly delay,
and then print a newline character so that an empty line
appears after the start-up messages. */
usleep(100000);
printf("\n");
/* Wait for all of the threads to terminate */
for (threadNum = 0; threadNum < numThreads; threadNum++) {
s = pthread_join(tid[threadNum], NULL);
if (s != 0)
errExitEN(s, "pthread_join");
}
exit(EXIT_SUCCESS);
}