簡體   English   中英

sysCall(Sys_gettid) 返回 -1

[英]sysCall(Sys_gettid) return -1

我在 iOS 應用程序上使用 sysCall(Sys_gettid),但返回 -1。

const char *elog_port_get_t_info(void) {
    static char cur_thread_info[10] = { 0 };

    snprintf(cur_thread_info, 10, "tid:%04ld", syscall(SYS_gettid));

    return cur_thread_info;
}

您不應該直接在 iOS 或 macOS 上使用syscall gettid調用旨在獲取當前線程 ID。 根據您要執行的操作,有幾種選擇:

例如,您可以使用 pthreads 查詢線程 ID:

#include <pthread.h>
uint64_t tid;
pthread_threadid_np(NULL, &tid);

您也可以使用NSThread 要么使用[NSThread currentThread]返回的指針,要么使用threadDictionary更好:

(untested)
NSString * identifier = thread.threadDictionary[@"myIDKey"];
if (identifier == nil) {
   identifier = [NSUUID UUID].UUIDString;
   thread.threadDictionary["myIDKey"] = identifier;
}

暫無
暫無

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

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