[英]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.