簡體   English   中英

Pthread〜在pthread中返回字符的函數。

[英]Pthread ~ Function that returns a character in pthread.

請給我一個示例函數,該函數從pThread返回字符。 例如說:我具有以下功能。

void *consumer (void* data)
{
 for (int ii=0; ii<100; ii++)
 {
    char myVar = c;
    return (void *)myVar;
}

}

上面的函數僅用於返回字符值。

在主要功能上。

pthread_t c;

char result;

pthread_create(&c, 0, consumer, &pc);

pthread_join(c, (void **) &result);

cout << "Main method Consumer return" << result  << endl;

我知道上面的代碼並不完整。 但是,我希望你能明白。 我只需要一個函數演示,該函數可以返回PThread中的字符。

提前致謝。

-Teva

我認為您唯一缺少的是如何正確將char轉換為void *。 嘗試使用以下代碼的線程函數:

char c = 'A';
intptr_t i = c;
return *(void **)&i;

接着:

char result;
intptr_t i;
pthread_join(c, (void **)&i);
result = i;

intptr_t類型是與指針大小相同的整數類型,因此此代碼避免將指針(4或8個字節,具體取決於32bit / 64bit系統)讀取為char(1個字節)。 如果要避免使用intptr_t,請使用諸如char arr[sizeof(void *)]; arr[0] = c; char arr[sizeof(void *)]; arr[0] = c;

編輯:

#include <pthread.h>
#include <stdio.h>
#include <inttypes.h>
static void *compute_prime(void *arg) {
    char c = 'A';
    intptr_t i= c;
    return *(void **)&i;
}
int main(void) {
    pthread_t thread;
    char result;
    intptr_t i;
    pthread_create(&thread, NULL, &compute_prime, NULL);
    pthread_join(thread, (void **) &i);
    result = i;
    printf("The returned value is %c\n", result);
    return 0;
}

印刷品:

The returned value is A

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM