Линус Торвальдс заявил в сообщении списка рассылки ядра в 1996 году, что «и потоки, и процессы рассматриваются как« контекст выполнения »», который является «просто конгломератом всех состояний этого CoE.... включает такие вещи, как состояние процессора, состояние MMU, разрешения и различные состояния связи (открытые файлы, обработчики сигналов и т. д. )».
// simple program to create threads that simply sleep
// compile in debian jessie with apt-get install build-essential
// and then g++ -O4 -Wall -std=c++0x -pthread threads2.cpp -o threads2
#include <string>
#include <iostream>
#include <thread>
#include <chrono>
// how many seconds will the threads sleep for?
#define SLEEPTIME 100
// how many threads should I start?
#define NUM_THREADS 25
using namespace std;
// The function we want to execute on the new thread.
void threadSleeper(int threadid){
// output what number thread we've created
cout << "task: " << threadid << "\n";
// take a nap and sleep for a while
std::this_thread::sleep_for(std::chrono::seconds(SLEEPTIME));
}
void main(){
// create an array of thread handles
thread threadArr[NUM_THREADS];
for(int i=0;i<NUM_THREADS;i++){
// spawn the threads
threadArr[i]=thread(threadSleeper, i);
}
for(int i=0;i<NUM_THREADS;i++){
// wait for the threads to finish
threadArr[i].join();
}
// program done
cout << "Done\n";
return;
}
Как вы видите, эта программа создаст одновременно 25 потоков, каждый из которых приостановится на 100 секунд, а затем снова присоединится к основной программе. После того, как все 25 потоков присоединятся к программе, программа завершится и завершится.
С помощью top
вы сможете увидеть 25 экземпляров программы threads2. Но чертовски скучно. Вывод ps auwx
еще менее интересен... НО ps -eLf
становится довольно захватывающим.
UID PID PPID LWP C NLWP STIME TTY TIME CMD
debian 689 687 689 0 1 14:52 ? 00:00:00 sshd: debian@pts/0
debian 690 689 690 0 1 14:52 pts/0 00:00:00 -bash
debian 6217 690 6217 0 1 15:04 pts/0 00:00:00 screen
debian 6218 6217 6218 0 1 15:04 ? 00:00:00 SCREEN
debian 6219 6218 6219 0 1 15:04 pts/1 00:00:00 /bin/bash
debian 6226 6218 6226 0 1 15:04 pts/2 00:00:00 /bin/bash
debian 6232 6219 6232 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6233 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6234 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6235 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6236 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6237 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6238 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6239 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6240 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6241 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6242 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6243 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6244 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6245 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6246 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6247 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6248 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6249 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6250 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6251 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6252 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6253 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6254 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6255 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6256 0 26 15:04 pts/1 00:00:00./threads2
debian 6232 6219 6257 0 26 15:04 pts/1 00:00:00./threads2
debian 6260 6226 6260 0 1 15:04 pts/2 00:00:00 ps -eLf
Здесь вы можете увидеть все 26 ЦП, созданных программой thread2
. Все они имеют один и тот же идентификатор процесса (PID )и идентификатор родительского процесса (PPID ), но у каждого из них свой идентификатор LWP (, облегченный процесс )и количество LWP (. ] NLWP )указывает, что существует 26 CoE — основная программа и 25 порожденных ею потоков.
Hyper — это сочетание клавиш CTRL, ALT и SUPER
По крайней мере, так это делает R _ALT -по -Hyper-плагин для HID evdev Инструменты перехвата .
Слой Evdev ниже, чем X11 и Wayland, поэтому Hyper
становится доступным в любой системе пользовательского интерфейса, которую вы используете.