线程

「线程」的各地常用名稱
中国大陸线程
臺灣執行緒
港澳線程

线程(英語:thread)在计算机科学中,是将进程划分为两个或多个线程(实例)或子进程,由单处理器(单线程)或多处理器(多线程)或多核处理系统并发执行。

狀態

執行緒有四種基本狀態,分別為:

  • 產生(spawn
  • 阻塞(block
  • 非阻塞(unblock
  • 結束(finish

线程包含要素

  • 线程内核对象(thread kernel object)
  • 线程环境块(thread environment block, TEB)
  • 用户模式栈(user-mode stack)(unblock
  • 内核模式栈(kernal-mode stack)(thread environment block, TEB)
  • DLL线程连接(attach)和线程分离(detach)通知(kernal-mode stack)

不同平台的线程

UNIX International线程

UNIX International线程简介

SUN Solaris操作系统使用的线程叫做UNIX International线程,支持内核线程、轻权进程和用户线程。一个进程可有大量用户线程;大量用户线程复用少量的轻权进程,轻权进程与内核线程一一对应。用户级线程在调用核心服务时(如文件读写),需要“捆绑(bound)”在一个LWP上。永久捆绑(一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外)和临时捆绑(从LWP池中临时分配一个未被占用的LWP)。在调用系统服务时,如果所有LWP已被其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP。如果LWP执行系统线程时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞。

UNIX International线程的有关API

UNIX International线程的头文件是<thread.h>[1]

创建用户级线程
int thr_create(void * stack_base, size_t stack_size, void *(*start_routinevoid *), void * arg, long flags, thread_t * new_thr);

其中flags包括:THR_BOUND(永久捆绑), THR_NEW_LWP(创建新LWP放入LWP池),若两者同时指定则创建两个新LWP,一个永久捆绑而另一个放入LWP池。

等待用户级线程
int thr_join(thread_t wait_for, thread_t *dead, void **status);
挂起用户级线程
int thr_suspend(thread_t thr);
继续用户级线程
int thr_continue(thread_t thr);
退出用户级线程
void thr_exit(void *status);
返回当前用户级线程的线程标识符
thread_t thr_self( void );

POSIX线程

POSIX线程简介

POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(UnixLinuxMac OS X等)中,都使用Pthreads作为操作系统的线程[2][3][4]Windows操作系统也有其移植版pthreads-win32[5]

POSIX线程的有关API

Pthreads线程的头文件是<pthread.h>[6][7]

创建用户线程
int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void *(*start_routine)(void *), void *arg);
等待用户线程
int pthread_join(pthread_t thread, void ** retval);
退出用户线程
void pthread_exit(void *retval);
返回当前用户线程的线程标识符
pthread_t pthread_self(void);
用户线程的取消
int pthread_cancel(pthread_t thread);

Win32线程

Win32线程简介

Win32线程是Windows API的一部分,上下文包括:寄存器、核心栈、线程环境块和用户栈。

Win32线程的有关API

Win32线程的头文件是<Windows.h>,仅适用于Windows操作系统。[8]

创建用户线程
HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
结束本线程
VOID WINAPI ExitThread(DWORD dwExitCode);
挂起指定的线程
DWORD WINAPI SuspendThread( HANDLE hThread );
恢复指定线程运行
DWORD WINAPI ResumeThread(HANDLE hThread);
等待线程运行完毕
DWORD WINAPI WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);
返回当前线程的线程标识符
DWORD WINAPI GetCurrentThreadId(void);
返回当前线程的线程句柄
HANDLE WINAPI GetCurrentThread(void);

跨平台的线程

C++11线程

C++11线程简介

2011年8月12日,国际标准化组织(ISO)发布了第三个C++标准,即ISO/IEC 14882:2011,简称ISO C++ 11标准。该标准第一次把线程的概念引入C++标准库。Windows平台运行的VS2012Linux平台运行的g++4.7,都完美支持C++11线程。

C++11线程的有关函数

C++ 11线程的头文件是<thread>[9]

创建线程
std::thread::thread(Function&& f, Args&&... args);
等待线程结束
std::thread::join();
脱离线程控制
std::thread::detach();
交换线程
std::thread::swap(thread& other);

C11线程

C11线程简介

2011年12月8日,国际标准化组织(ISO)发布了第三个C语言标准,即ISO 9899:2011,简称ISO C 11标准。该标准第一次把线程的概念引入C语言标准库。

C11线程仅仅是个“建议标准”,也就是说100%遵守C11标准的C编译器是可以不支持C11线程的。根据C11标准的规定,只要编译器预定义了 __STDC_NO_THREADS__(C11),就可以没有<threads.h>头文件,自然也就也没有下列函数。

C11线程的有关函数

C11线程的头文件是<threads.h>[10]

创建线程
int thrd_create(thrd_t *thr, thrd_start_t func, void *arg);
结束本线程
_Noreturn void thrd_exit( int res );
等待线程运行完毕
int thrd_join(thrd_t thr, int *res);
返回当前线程的线程标识符
thrd_t thrd_current();

Java线程

  1. 最简单的情况是,Thread/Runnablerun()方法运行完毕,自行终止。
  2. 对于更复杂的情况,比如有循环,则可以增加终止标记变量和任务终止的检查点。
  3. 最常见的情况,也是为了解决阻塞不能执行检查点的问题,用中断来结束线程,但中断只是请求,并不能完全保证线程被终止,需要执行线程协同处理。
  4. IO阻塞和等锁情况下需要通过特殊方式进行处理。
  5. 使用Future类的cancel()方法调用。
  6. 调用线程池执行器的shutdown()shutdownNow()方法。
  7. 守护线程会在非守护线程都结束时自动终止。
  8. Thread有stop()方法,但已不推荐使用。

参见

参考资料

  1. ^ Novell Doc: NDK: Libraries for C (LibC), Volume 2 - UI Thread Functions页面存档备份,存于互联网档案馆), NOVELL Worldwide
  2. ^ pthreads (7) 互联网档案馆存檔,存档日期2013-10-08., UNIX man pages
  3. ^ pthreads (7)页面存档备份,存于互联网档案馆), Linux manual page
  4. ^ pthread (3) Mac OS X Developer Tools Manual Page页面存档备份,存于互联网档案馆), Apple Developer
  5. ^ POSIX Threads (pthreads) for Win32页面存档备份,存于互联网档案馆), sourceware.org: Free software! Get your fresh hot free software!
  6. ^ PTHREAD_CREATE页面存档备份,存于互联网档案馆), Linux Man Pages
  7. ^ POSIX Threads Programming页面存档备份,存于互联网档案馆), High Performance Computing: High Performance Computing
  8. ^ Multiple Threads (Windows)页面存档备份,存于互联网档案馆), MSDN-the microsoft developer network
  9. ^ std::thread页面存档备份,存于互联网档案馆), cppreference.com
  10. ^ Thread support library页面存档备份,存于互联网档案馆), cppreference.com

Read other articles:

Chemical compound For the function of calcium phosphate in organisms, see Calcium metabolism. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Calcium phosphate – news · newspapers · books · scholar · JSTOR (March 2019) (Learn how and when to remove this template message) Calcium phosphate Calcium Phosphate n...

 

1949 comedy film Adam and EveFilm posterDirected byMario MattoliWritten byMarcello MarchesiVittorio MetzProduced byDino De LaurentiisStarringErminio MacarioCinematographyAldo TontiEdited byGiuliana AttenniMusic byPippo BarzizzaDistributed byLux FilmRelease date 29 November 1949 (1949-11-29) Running time77 minutesCountryItalyLanguageItalian Adam and Eve (Italian: Adamo ed Eva) is a 1949 Italian comedy film directed by Mario Mattoli and starring Erminio Macario.[1] Cast E...

 

Peta wilayah Aschbach-Markt (merah). Aschbach-Markt adalah kota yang terletak di Austria Hilir, Austria. Kota ini memiliki luas sebesar 37.21 km². Kota ini memiliki populasi sebesar 3.637 jiwa. Pranala luar Situs resmi lbsKota di distrik Amstetten Allhartsberg Amstetten Ardagger Aschbach-Markt Behamberg Biberbach Ennsdorf Ernsthofen Ertl Euratsfeld Ferschnitz Haag Haidershofen Hollenstein an der Ybbs Kematen an der Ybbs Neuhofen an der Ybbs Neustadtl an der Donau Oed-Öhling Opponitz Sa...

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada November 2022. Diego Seoane Informasi pribadiNama lengkap Diego Seoane PérezTanggal lahir 26 April 1988 (umur 35)Tempat lahir Ourense, SpanyolTinggi 180 m (590 ft 7 in)Posisi bermain Bek kananInformasi klubKlub saat ini Lugo (pinjaman dari Depor...

 

Jawa Pos GroupJenisSwastaDidirikan1953PendiriSuseno TedjoKantorpusatGraha Pena, Surabaya, Jawa Timur, IndonesiaTokohkunciEric SamolaDahlan IskanAzrul AnandaProdukSurat kabar, listrik, kertasSitus webcorporate.jawapos.com Jawa Pos Group adalah perusahaan yang menaungi lebih dari 151 surat kabar daerah dan nasional di Indonesia, yang paling terkenal adalah Jawa Pos, dan belasan tabloid, majalah, dan televisi daerah. Surat kabar daerah yang berada di bawah payung induk ini kebanyakan berawalan R...

 

Halaman ini berisi artikel tentang satelit Jupiter. Untuk dewa dalam mitologi Yunani, lihat Io (mitologi). IoCitra Io dalam warna sejati yang diabadikan oleh Galileo. Titik hitam di sebelah kiri bagian tengah merupakan letusan gunung berapi Prometheus. Daratan berwarna keputihan dilapisi oleh endapan sulfur dioksida yang beku, sementara wilayah yang berwarna kuning memiliki kandungan sulfur yang tinggi.PenemuanDitemukan olehGalileo GalileiTanggal penemuan8 Januari 1610[1]Pen...

العلاقات السورينامية الصربية سورينام صربيا   سورينام   صربيا تعديل مصدري - تعديل   العلاقات السورينامية الصربية هي العلاقات الثنائية التي تجمع بين سورينام وصربيا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقارنة...

 

USS Forrestal, lead ship of her class of supercarriers Kapal induk kelas Forrestal adalah kelas empat kapal dirancang dan dibangun untuk Angkatan Laut Amerika Serikat pada 1950-an. Itu kelas pertama disebut supercarriers, menggabungkan tonase tinggi, dek-tepi lift dan dek miring. Kapal pertama ditugaskan pada tahun 1955, yang terakhir dinonaktifkan pada tahun 1998. Kapal di kelasnya Nama Pembangun Dipesan Dibangun Diujicoba Selesai Dibebastugaskan Nasib Sumber Forrestal Newport News Shipbuild...

 

ZeniMax Media Inc.JenisPrivateIndustriIndustri permainan videoDidirikan1999; 25 tahun lalu (1999)PendiriChristopher WeaverRobert A. AltmanKantorpusatRockville, Maryland, ASTokohkunciRobert A. Altman(ketua, CEO)James L. Leder(presiden, COO)Cindy L. Tallent(EVP, CFO)Total ekuitasUS$2,5 miliar[1] (2016)Karyawan1,500+ (2017)AnakusahaArkane StudiosBethesda Softworksid SoftwareMachineGamesTango GameworksZeniMax Online StudiosSitus webzenimax.com ZeniMax Media Inc. adalah...

イスラームにおける結婚(イスラームにおけるけっこん)とは、二者の間で行われる法的な契約である。新郎新婦は自身の自由な意思で結婚に同意する。口頭または紙面での規則に従った拘束的な契約は、イスラームの結婚で不可欠だと考えられており、新郎と新婦の権利と責任の概要を示している[1]。イスラームにおける離婚は様々な形をとることができ、個�...

 

Ted TurnerTurner in 2015.LahirRobert Edward Turner III19 November 1938 (umur 85)Cincinnati, Ohio, Amerika SerikatKebangsaanAmerika SerikatPekerjaanRaja MediaDikenal atasTelevisi, Ted's Montana Grill, bekas pemilik Atlanta Braves, filantropisKekayaan bersih $2.3 billion[1]Suami/istriJulia Gale Nye (1960–1964) Jane Shirley Smith (1965–1988) Jane Fonda (1991–2001)AnakLaura Lee, Robert Edward IV, Rhett, Beauregard, Jennie Robert Edward Ted Turner III (lahir 19 November 19...

 

1973 Polish filmThe Hourglass SanatoriumTheatrical release posterDirected byWojciech Jerzy HasScreenplay byWojciech Jerzy HasBased onSanatorium Under the Sign of the Hourglassby Bruno SchulzStarringJan NowickiTadeusz KondratMieczysław VoitHalina KowalskaGustaw HoloubekCinematographyWitold SobocińskiEdited byJanina NiedźwieckaMusic byJerzy MaksymiukProductioncompanyZespół Filmowy SilesiaDistributed byFilm PolskiRelease dates May 1973 (1973-05) (Cannes Film Festival) 11 ...

American baseball player Baseball player John CandelariaPitcherBorn: (1953-11-06) November 6, 1953 (age 70)Brooklyn, New York, U.S.Batted: LeftThrew: LeftMLB debutJune 8, 1975, for the Pittsburgh PiratesLast MLB appearanceJuly 7, 1993, for the Pittsburgh PiratesMLB statisticsWin–loss record177–122Earned run average3.33Strikeouts1,673 Teams Pittsburgh Pirates (1975–1985) California Angels (1985–1987) New York Mets (1987) New York Yankees (1988–1989...

 

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada. Busca fuentes: «Sistema de Observación de la Tierra» – noticias · libros · académico · imágenesEste aviso fue puesto el 12 de noviembre de 2020. El Sistema de Observación de la Tierra (acrónimo en inglés EOS) es un programa de la NASA que comprende una serie de misiones de satélites artificiales y de instrumentales científicos en órbita terrestre, diseñados para ob...

 

Chandra Sekhar YeletiGembar Chandra sekhar Yeleti di tempat pengambilan gambar SahasamLahir04 Maret 1973 (umur 51)Tuni, Andhra Pradesh, IndiaTempat tinggalHyderabad, Andhra Pradesh, IndiaPekerjaanSutradara, Penulis latarTahun aktif2003–sekarang Chandra Sekhar Yeleti (kelahiran 4 Maret 1973) adalah seorang sutradara film India, yang dikenal karena karya-karyanya dalam sinema Telugu. Ia membuat debut penyutradaraannya dengan film Aithe, yang meraih Penghargaan Film Nasional untuk F...

Ядерная физикаАтомное ядро · Радиоактивный распад · Ядерная реакция · Термоядерная реакция Основные термины Атомное ядро · Изотопы · Изобары · Капельная модель ядра · Период полураспада · Массовое число · Составное ядро · Цепная ядерная реакция · Ядерное эффективное с�...

 

Untuk kegunaan lain, lihat Valencia (disambiguasi). Valencia València/Valencia BenderaLambang kebesaranCountry SpainAutonomous Community Valencian CommunityProvinceValenciaComarcaValenciaFounded137 BCDistricts Daftar Ciutat VellaEixampleExtramursCampanarSaïdiaPla del RealOliveretaPatraixJesúsQuatre CarreresPoblados MarítimosCaminos al GraoAlgirósBenimacletPoblados del NortePoblados del OestePoblados del Sur Pemerintahan • JenisMayor-council government • ...

 

Research university in Bethesda, Maryland, USA National Intelligence UniversitySeal of the UniversityFormer namesDefense Intelligence School, Defense Intelligence College, Joint Military Intelligence College, National Defense Intelligence CollegeMottoScientia Est Lux LucisMotto in EnglishKnowledge is EnlightenmentTypePublic research universityEstablished1962 (1962)Parent institutionOffice of the Director of National IntelligenceAcademic affiliationCUWMAChairpersonGilman LouiePreside...

  لمعانٍ أخرى، طالع تيلفورد (توضيح). تيلفوردالبلد  المملكة المتحدة المنطقة ميدلاند الغربية المساحة 50٫559 كم²[1] الدائرة الانتخابيةتأسست في 1 مايو 1997 عدد المقاعد 1 مجلس العموم تعديل - تعديل مصدري - تعديل ويكي بيانات 52°40′41″N 2°26′56″W / 52.678°N 2.449°W / 52.678; -2.449 ...

 

Maria Theresa by Andreas Møller c. 1727 Andreas Møller (German: Andreas Möller; 30 November 1684 – c. 1762) was a Danish portrait painter and pioneer of miniature painting who worked at many European courts. Biography Born in Copenhagen, Andreas Møller was the first Danish painter of international standing. Andreas was the son of Daniel Møller, the drawing teacher of King Frederick IV. Already in his youth he spent much time abroad, particularly in London, winning early renown as an ac...