Natice層執行緒建立的方法

2021-07-15 00:01:50 字數 1243 閱讀 9238

有兩個方法在native層建立thread:

1.直接使用pthread_create函式

bionic/libc/bionic/pthread_create.cpp

註冊的函式是怎樣被呼叫到的?

int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,

void* (*start_routine)(void*), void* arg)

static int __pthread_start(void* arg)

執行緒的名字是怎樣被更改的?預設是?

prctl(pr_set_name, "***x");

2. 使用繼承基類thread的方法

方法1 建立thread還是比較簡單的,直觀的。但是下面這種方式,就不太直觀

要找到基類thread的實現,在**? 看標頭檔案就行,通過標頭檔案,和檔名等,最終找到

thead基類的實現system/core/libutils/threads.cpp

class eventthread : public thread

private:

int msourcetype;

string8 msourcename;

};從中可以看到,主幹函式threadloop是怎樣被調到的。

monitor_thread->run(monitor_thread->getname(), priority_normal);

status_t thread::run(const char* name, int32_t priority, size_t stack)

else

return no_error;

}int androidcreaterawthreadetc(android_thread_func_t entryfunction,

void *userdata,

const char* threadname __android_unused,

int32_t threadpriority,

size_t threadstacksize,

android_thread_id_t *threadid)

pthread_create建立執行緒的入口函式是已知的:_threadloop

int thread::_threadloop(void* user)

self->threadloop();這個就是子類生成的主函式

建立執行緒的方法

1.繼承thread類來建立執行緒,這個方法的好處是this代表的就是當前執行緒,不需要通過thread.currentthread 來獲取當前執行緒的引用。public class main public static void main string args 2.實現runnable介面,並且...

執行緒的建立方法

1 繼承thread類,調start方法 public class mainthread class mythread extends thread 2 實現runnable介面 public class mainthread class myrun implements runnable 3 執行...

執行緒建立方法

第一種方式 使用runnable介面建立執行緒。使用runnable介面建立執行緒 1.可以將cpu,和資料分開,形成清晰的模型 2.執行緒體run 方法所在的類可以從其它類中繼承一些有用的屬性和方法 3.有利於保持程式的設計風格一致 用runnanble 建立執行緒的步驟 1.定義乙個runnab...