首页 > 其他分享 >Intellij Plugin 配置结果概述

Intellij Plugin 配置结果概述

时间:2023-06-02 21:33:11浏览次数:53  
标签:required group Intellij plugin text Plugin 概述 action optional


资料

官网

目录

<idea-plugin>
	<id>
	<name>
	<version>
	<product-descriptor>
	<idea-version>
	<vendor>
	<description>
	<change-notes>
	<depends>
	<incompatible-with>
	<actions>
		<action>
			<add-to-group>
			<keyboard-shortcut>
			<mouse-shortcut>
			<override-text>
			<abbreviation>
			<synonym>
		<group>
			<action>
				<add-to-group>
				<keyboard-shortcut>
				<mouse-shortcut>
				<override-text>
				<abbreviation>
				<synonym>
			<group>
			<add-to-group>
			<override-text>
			<reference>
				<add-to-group>
			<separator>
				<add-to-group>
		<reference>
			<add-to-group>
		<separator>
			<add-to-group>
	<extensionPoints>
		<extensionPoint>
			<with>
	<extensions>
	<applicationListeners>
		<listener>
	<projectListeners>
		<listener>
	<resource-bundle>

idea-plugin

plugin.xml的根目录
必要:yes

属性:

  • url: (可选,在附加配置中被忽略) JetBrains Marketplace 中插件页面上显示的插件主页链接。
  • require-restart: (可选) 确定插件安装、更新或卸载是否需要重新启动 IDE 的布尔值(有关详细信息,请参阅动态插件)。默认值 : false

子节点:

<actions>
<applicationListeners>
<change-notes>
<depends>
<incompatible-with>
<description>
<extensions>
<extensionPoints>
<id>
<idea-version>
<name>
<product-descriptor>
<projectListeners>
<resource-bundle>
<vendor>
<version>
Deprecated:
<application-components>
<module-components>
<project-components>

id

插件的唯一标识符。它应该是一个类似于 Java 包的完全限定名称,并且不能与现有插件的 ID 冲突。ID 是用于识别 IDE 和 JetBrains Marketplace 中插件的技术值。
插件标识符不能在插件版本之间更改.

必需的  不;在附加配置文件中忽略 
 	强烈建议在plugin.xml文件中配置.如果启用并配置了Gradle task,则可以在plugin.xml文件中跳过该元素
 默认值 <name>元素的值
 例子   <id>com.example.myframeworksupport</id>

name

用户可见的插件名称 JetBrains Marketplace: Plugin Name

必需 yes;在附加文件中被忽略
例子 <name>My Framework Support</name>

version

插件设置对话框和 JetBrains Marketplace 插件页面中显示的插件版本。上传到 JetBrains Marketplace 的插件必须遵循语义版本控制。

必需的 是的;在附加配置文件中忽略 如果启用并配置了 Gradle任务,则可以在源plugin.xml
文件中跳过该元素。patchPluginXml
例子: <version>1.3.18</version>

product-descriptor

必需的 
only for paid or freemium plugins; ignored in additional config file
Do not add <product-descriptor> element in a free plugin.

Attributes

code (required)
The plugin product code used in the JetBrains Sales System. The code must be agreed with JetBrains in advance and follow the requirements.

release-date (required)
Date of the major version release in the YYYYMMDD format.

release-version (required)
A major version in a special number format.

optional (optional)
The boolean value determining whether the plugin is a Freemium plugin.
Default value: false.

idea-version

The plugin’s range of compatible IntelliJ-based IDE versions.

Reference: Build Number Ranges

Required

yes; ignored in additional config file
The element can be skipped in the source plugin.xml file if the Gradle patchPluginXml task is enabled and configured.

Attributes

since-build (required)
The lowest IDE version compatible with the plugin.

until-build (optional)
The highest IDE version compatible with the plugin. Undefined value declares compatibility with all the IDEs since the version specified by the since-build (also with the future builds what may cause incompatibility errors).

Examples

Compatibility with a specific build number (2021.3.3) and higher versions:

<idea-version since-build="213.7172.25"/>
Compatibility with versions from any of 213 branches to any of 221 branches:

<idea-version since-build="213" until-build="221.*"/>

vendor

The vendor name or organization ID (if created) in the Plugins settings dialog and in the JetBrains Marketplace plugin page.

Reference: JetBrains Marketplace: Contacts and Resources

yes; ignored in additional config file

Attributes

url (optional)
The link to the vendor's homepage.

email (optional)
The vendor's email address.

Examples

Personal vendor with an email address provided:

<vendor email="[email protected]">Joe Doe</vendor>
Organizational vendor with a website URL and email address provided:

<vendor
    url="https://mycompany.example.com"
    email="[email protected]">
  My Company
</vendor>

description

The plugin description displayed on the JetBrains Marketplace plugin page and in the Plugins settings dialog.

Simple HTML elements, like text formatting, paragraphs, lists, etc., are allowed and must be wrapped into <![CDATA[... ]]> section.

Reference: JetBrains Marketplace: Plugin Description

Required

yes; ignored in additional config file
The element can be skipped in the source plugin.xml file if the Gradle patchPluginXml task is enabled and configured.

Example

<description><![CDATA[
Provides support for My Framework.
The support includes:
<ul>
  <li>code completion</li>
  <li>references</li>
</ul>
For more information visit the
<a href="https://example.com">project site</a>.
]]></description>

change-notes

A short summary of new features, bugfixes, and changes provided with the latest plugin version. Change notes are displayed on the JetBrains Marketplace plugin page and in the Plugins settings dialog.

Simple HTML elements, like text formatting, paragraphs, lists, etc., are allowed and must be wrapped into <![CDATA[... ]]> section.

Reference: JetBrains Marketplace: Change Notes

Required

no; ignored in additional config file
The element can be skipped in the source plugin.xml file if the Gradle patchPluginXml task is enabled and configured.

Example

<change-notes><![CDATA[
<h2>New Features</h2>
<ul>
  <li>Feature 1</li>
  <li>Feature 2</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
  <li>Fixed issue 1</li>
  <li>Fixed issue 2</li>
</ul>
]]></change-notes>

depends

Specifies a dependency on another plugin or a module of an IntelliJ Platform-based product. A single <idea-plugin> element can contain multiple elements.
References:

Dependencies

Modules Specific to Functionality

Required

no; in most cases dependency on the platform module is needed

Attributes

optional (optional)
Boolean value defining whether the dependency is optional to load the plugin in the IDE. If the dependency plugin is not installed in the current IDE, and optional is:

true - the plugin will be loaded

false (default) - the plugin will not be loaded

config-file (optional)
Relative path to an additional configuration file, loaded only if the dependency plugin is installed in the current IDE.

Examples

Required plugin dependency:

<depends>com.example.dependencypluginid</depends>
Required dependency on the IntelliJ IDEA Java Module:

<depends>com.intellij.modules.java</depends>
Optional plugin dependency:

<depends optional="true">
  com.example.dependencypluginid
</depends>
Required module dependency with additional configuration:

<depends
    config-file="myPluginId-withJava.xml">
  com.intellij.modules.java
</depends>
Optional module dependency with additional configuration:

<depends
    optional="true"
    config-file="myPluginId-withKotlin.xml">
  org.jetbrains.kotlin
</depends>

incompatible-with

Supported since 2020.2

Declares incompatibility with a provided module.

Reference: Declaring Incompatibility with Module

Required

no; ignored in additional config file

Example

<incompatible-with>
  com.intellij.modules.appcode.ide
</incompatible-with>

resource-bundle

A resource bundle to be used with message key attributes in extension declarations and for action and group localization. A single <idea-plugin> element can contain multiple <resource-bundle> elements.

Required

no

Example

To load the content of messages/Bundle.properties bundle, declare:

<resource-bundle>messages.Bundle</resource-bundle>

applicationListeners

applicationListeners
Defines the application-level listeners.

Reference: Defining Application-Level Listeners

Required

no

Children

<listener>

projectListseners

projectListeners
Defines the project-level listeners.

Reference: Defining Project-Level Listeners

Required

no

Children

<listener>

listener

listener
Defines a single application or project-level listener. A single <applicationListeners> or <projectListeners> can contain multiple <listener> elements.

Reference: Listeners

Required

no

Attributes

topic (required)
The fully qualified name of the listener interface corresponding to the type of received events.

class (required)
The fully qualified name of the class implementing the listener interface that receives and handles the events.

os (optional; supported since 2020.1)
Restricts listener instantiation to a specific operating system. Allowed values:

freebsd

mac

linux

unix

windows

activeInTestMode (optional)
Boolean flag defining whether the listener should be instantiated in test mode.
Default value: true.

activeInHeadlessMode (optional)
Boolean flag defining whether the listener should be instantiated in headless mode.
Default value: true.

Example

<listener
    topic="com.intellij.ide.AppLifecycleListener"
    class="com.example.MyListener"
    os="mac"
    activeInTestMode="false"/>

actions

actions
Defines the plugin actions.

Reference: Actions

Required

no

Attributes

resource-bundle (optional; supported in 2020.1+)
Defines the dedicated actions resource bundle. See Localizing Actions and Groups for more details.

Children

<action>

<group>

<reference>

<separator>

Example

<actions resource-bundle="messages.ActionsBundle">
  <!--
  Actions/Groups defined here will use keys
  from the ActionsBundle.properties bundle.
  -->
</actions>

action

action
A single action entry of the <actions> implemented by the plugin. A single <actions> element can contain multiple <action> elements.

Reference: Registering Actions in plugin.xml

Required

no

Attributes

id (required)
A unique action identifier. The action identifier must be unique between different plugins. Thus, it is recommended to prepend it with the value of the plugin <id>.

class (required)
The fully qualified name of the action implementation class.

text (required if the action is not localized)
The default long-version text to be displayed for the action (tooltip for toolbar button or text for menu item).

description (optional)
The text which is displayed in the status bar when the action is focused.

icon (optional)
The icon that is displayed on the toolbar button or next to the action menu item. See Working with Icons and Images for more information about defining and using icons.

use-shortcut-of (optional)
The ID of the action whose keyboard shortcut this action will use.

Children

<abbreviation>

<add-to-group>

<keyboard-shortcut>

<mouse-shortcut>

<override-text>

<synonym>

Examples

Action declaring explicit text:

<action
    id="com.example.myframeworksupport.MyAction"
    class="com.example.impl.MyAction"
    text="Do Action"
    description="Do something with the code"
    icon="AllIcons.Actions.GC">
  <!-- action children elements -->
</action>
Action without the text attribute must use the texts from the resource bundle declared with the <resource-bundle> element, or the resource-bundle attribute of the <actions> element:

<action
    id="com.example.myframeworksupport.MyAction"
    class="com.example.impl.MyAction"
    icon="AllIcons.Actions.GC"/>

add-to-group

add-to-group
Specifies that the action should be added to an existing group. A single action can be added to multiple groups.

Required

no

Attributes

group-id (required)
Specifies the ID of the group to which the action is added. The group must be an implementation of the DefaultActionGroup class.

anchor (optional)
Specifies the position of the action in the relative to other actions. Allowed values:

first - the action is placed as the first in the group

last (default) - the action is placed as the last in the group

before - the action is placed before the action specified by the relative-to-action attribute

after - the action is placed before the action specified by the relative-to-action attribute

relative-to-action (required if anchor is before/after)
The action before or after which the current action is inserted.

Example

<add-to-group
    group-id="ToolsMenu"
    anchor="after"
    relative-to-action="GenerateJavadoc"/>

keyboard-shortcut

keyboard-shortcut
Specifies the keyboard shortcut for the action. A single action can have several keyboard shortcuts.

Required

no

Attributes

keymap (required)
Specifies the keymap for which the action shortcut is active. IDs of the standard keymaps are defined as constants in the KeymapManager class.

first-keystroke (required)
Specifies the first keystroke of the action shortcut. The keystrokes are specified according to the regular Swing rules.

second-keystroke (optional)
Specifies the second keystroke of the action shortcut.

remove (optional)
Removes a shortcut from the specified action.

replace-all (optional)
Removes all keyboard and mouse shortcuts from the specified action before adding the specified shortcut.

Examples

Add the first and second keystrokes to all keymaps:

<keyboard-shortcut
    keymap="$default"
    first-keystroke="control alt G"
    second-keystroke="C"/>
Remove the given shortcut from the Mac OS X keymap:

<keyboard-shortcut
    keymap="Mac OS X"
    first-keystroke="control alt G"
    second-keystroke="C"
    remove="true"/>
Remove all existing keyboard and mouse shortcuts and register one for the Mac OS X 10.5+ keymap only:

<keyboard-shortcut
    keymap="Mac OS X 10.5+"
    first-keystroke="control alt G"
    second-keystroke="C"
    replace-all="true"/>

mouse-shortcut

mouse-shortcut
Specifies the mouse shortcut for the action. A single action can have several mouse shortcuts.

Required

no

Attributes

keymap (required)
Specifies the keymap for which the action shortcut is active. IDs of the standard keymaps are defined as constants in the KeymapManager class.

keystroke (required)
Specifies the clicks and modifiers for the action. It is defined as a sequence of words separated by spaces:

modifier keys: shift, control, meta, alt, altGraph

mouse buttons: button1, button2, button3

button double-click: doubleClick

remove (optional)
Removes a shortcut from the specified action.

replace-all (optional)
Removes all keyboard and mouse shortcuts from the specified action before adding the specified shortcut.

Examples

Add the shortcut to all keymaps:

<mouse-shortcut
    keymap="$default"
    keystroke="control button3 doubleClick"/>
Remove the given shortcut from the Mac OS X keymap:

<mouse-shortcut
    keymap="Mac OS X"
    keystroke="control button3 doubleClick"
    remove="true"/>
Remove all existing keyboard and mouse shortcuts and register one for the Mac OS X 10.5+ keymap only:

<mouse-shortcut
    keymap="Mac OS X 10.5+"
    keystroke="control button3 doubleClick"
    replace-all="true"/>

override-text

override-text
Defines an alternate version of the text for the menu action or group.

Supported

2020.1+ for actions
2020.3+ for groups

Required

no

Attributes

place (required)
Declares where the alternate text should be used.

text (text or use-text-of-place is required)
Defines the text to be displayed for the action.

use-text-of-place (text or use-text-of-place is required)
Defines a location whose text should be displayed for this action.

Examples

Explicitly overridden text:

<override-text
    place="MainMenu"
    text="Collect _Garbage"/>
Overridden text reused from the MainMenu place:

<override-text
    place="EditorPopup"
    use-text-of-place="MainMenu"/>

abbreviation

abbreviation
Defines an alias for the action name which the user can use in Help | Find Action... or Navigate | Search Everywhere popups. A single action can have multiple abbreviations.

Required

no

Attributes

value (required)
The abbreviation value.

Example

<abbreviation value="abc"/>

synonym

synonym
Defines an alternative name for searching the action by name. A single action can have multiple synonyms.

Supported

2020.3+

Required

no

Attributes

text (required)
The synonym text.

Example

<synonym text="GC"/>

group

group
Defines an action group. The <action>, <group> and <separator> elements defined inside the group are automatically included in it. The <group> elements can be nested.

Reference: Grouping Actions

Required

no

Attributes

id (required)
A unique group identifier. The group identifier must be unique between different plugins. Thus, it is recommended to prepend it with the value of the plugin <id>.

class (optional)
The fully qualified name of the group implementation class. If not specified, DefaultActionGroup is used.

text (required if the popup is true and group is not localized)
The default long-version text to be displayed for the group (text for the menu item showing the submenu).

description (optional)
The text which is displayed in the status bar when the group is focused.

icon (optional)
The icon that is displayed next to the group menu item. See Working with Icons and Images for more information about defining and using icons.

popup (optional)
Boolean flag defining whether the group items are presented in the submenu popup.

true - group actions are placed in a submenu

false (default) - actions are displayed as a section of the same menu delimited by separators

compact (optional)
Boolean flag defining whether disabled actions within this group are hidden. If the value is:

true - disabled actions are hidden

false (default) - disabled actions are visible

use-shortcut-of (optional)
The ID of the action whose keyboard shortcut this group will use.

searchable (optional; supported in 2020.3+)
Boolean flag defining whether the group is displayed in Help | Find Action... or Navigate | Search Everywhere popups.
Default value: true.

Children

<action>

<add-to-group>

<group>

<override-text>

<reference>

<separator>

Examples

Group declaring explicit text:

<group
    id="com.example.myframeworksupport.MyGroup"
    popup="true"
    text="My Tools">
  <!-- group children elements -->
</group>
A popup group without the text attribute must use the texts from the resource bundle declared with the <resource-bundle> element, or the resource-bundle attribute of the <actions> element:

<group
    id="com.example.myframeworksupport.MyGroup"
    popup="true"/>
A group with custom implementation and icon:

<group
    id="com.example.myframeworksupport.MyGroup"
    class="com.example.impl.MyGroup"
    icon="AllIcons.Actions.GC"/>

reference

reference
Allows adding an existing action to the group. The element can be used directly under the <actions> element, or in the <group> element.

Required

no

Attributes

ref (required)
The ID of the action to add to a group.

Children

<add-to-group>

Examples

An action reference in a group:

<group ...>
  <reference ref="EditorCopy"/>
</group>
An action reference registered directly in the <actions> element:

<actions>
  <reference ref="com.example.MyAction">
    <add-to-group group-id="ToolsMenu"/>
  </reference>
</group>

separator

separator
Defines a separator between actions in a group. The element can be used directly under the <actions> element with the child <add-to-group> element defining the target group, or in the <group> element.

Required

no

Attributes

text (optional)
Text displayed on the separator. Separator text is displayed only in specific contexts such as popup menus, toolbars, etc.

key (optional)
The message key for the separator text. The message bundle for use should be registered via the resource-bundle attribute of the <actions> element. The attribute is ignored if the text attribute is specified.

Children

<add-to-group>

Examples

A separator dividing two actions in a group:

<group ...>
  <action .../>
  <separator/>
  <action .../>
</group>
A separator registered directly in the <actions> element:

<actions>
  <separator>
    <add-to-group
      group-id="com.example.MyGroup"
      anchor="first"/>
  </separator>
</group>
A separator with a defined text:

<separator text="Group By"/>
A separator with a text defined by message key:

<separator key="message.key"/>

extensions

extensions
Defines the plugin extensions.

Reference: Extensions

Required

no

Attributes

defaultExtensionNs (optional)
Default extensions namespace. It allows skipping the common prefix in fully qualified extension point names. Usually, the com.intellij namespace is used when the plugin implements IntelliJ Platform extensions.

Children

The children elements are registrations of the extension points defined by <extensionPoint> elements. Extension elements names follow the EPs names defined by name or qualifiedName attributes.

Example

Extensions declaration with the default namespace:

<extensions defaultExtensionNs="com.intellij">
  <applicationService
    serviceImplementation="com.example.Service"/>
</extensions>
Extensions declaration using the fully qualified extension name:

<extensions>
  <com.example.vcs.myExtension
    implementation="com.example.MyExtension"/>
</extensions>

extensionPoints

extensionPoints
Extension points defined by the plugin.

Reference: Extension Points

Required

no

Children

<extensionPoint>

extensionPoint
A single extension point entry of the <extensionPoints> defined by the plugin. A single <extensionPoints> element can contain multiple <extensionPoint> elements.

Reference: Declaring Extension Points

Required

no

Attributes

name (name or qualifiedName is required)
The extension point name that should be unique in the scope of the plugin, e.g., myExtension. The fully qualified name of the extension point is built at runtime by prepending the value of the name attribute with the plugin <id> + . prefix. Only one of the name and qualifiedName attributes can be specified.
Example: when the name is myExtension and plugin ID is com.example.myplugin, the fully qualified name of the EP will be com.example.myplugin.myExtension.

qualifiedName (name or qualifiedName is required)
The fully qualified name of the extension point. It should be unique between different plugins, and it is recommended to include a plugin ID to guarantee uniqueness, e.g., com.example.myplugin.myExtension. Only one of the name and qualifiedName attributes can be specified.

interface (interface or beanClass is required)
The fully qualified name of the interface to be implemented for extending plugin's functionality. Only one of the interface and beanClass attributes can be specified. See Extension Points for more information.

beanClass (interface or beanClass is required)
The fully qualified name of the extension point bean class providing additional information to the plugin. Only one of the interface and beanClass attributes can be specified. See Extension Points for more information.

dynamic (optional)
Boolean value defining whether the extension point meets the requirements to be dynamic, which is a prerequisite for dynamic plugins. Default value: false.

area (optional)
The scope in which the extension is instantiated. Allowed values:

IDEA_APPLICATION (default)

IDEA_PROJECT

IDEA_MODULE (deprecated)

It is not recommended to use non-default values.

Children

<with>

with

with
Specifies the required parent type for class names provided in extension point tags or attributes. A single <extensionPoint> element can contain multiple <with> elements.

Required

no

Attributes

tag (tag or attribute is required)
The name of the tag holding the fully qualified name of the class which parent type will be limited by the type provided in the implements attribute. Only one of the tag and attribute attributes can be specified.

attribute (tag or attribute is required)
The name of the attribute holding the fully qualified name of the class which parent type will be limited by the type provided in the implements attribute. Only one of the tag and attribute attributes can be specified.

implements (required)
The fully qualified name of the parent type limiting the type provided in the place specified by tag or attribute.

Example

An extension point which restricts the type provided in a myClass attribute to be an instance of com.example.ParentType, and the type provided in a someClass element to be an instance of java.lang.Comparable:

<extensionPoint
    name="myExtension"
    beanClass="com.example.MyExtension">
  <with
      attribute="myClass"
      implements="com.example.ParentType"/>
  <with
      tag="someClass"
      implements="java.lang.Comparable"/>
</extensionPoint>
When using the above extension point, an implementation could be registered as follows:

<myExtension ...
    myClass="com.example.MyCustomType">
  <someClass>com.example.MyComparable</someClass>
</myExtension>
where:

com.example.MyCustomType must be a subtype of com.example.ParentType

com.example.MyComparable must be a subtype of java.lang.Comparable


标签:required,group,Intellij,plugin,text,Plugin,概述,action,optional
From: https://blog.51cto.com/u_11797608/6405131

相关文章

  • Map系列集合:概述,HashMap<K,V>
           ......
  • 人工智能概述(2):研究内容梳理
    人工智能是为了模拟人的智能。那么,人的智能包含哪些呢?视觉、听觉、语言、语音、文字、知识、学习、判断、分类……因此,人工智能需要在多个领域进行研究,不同领域使用相同或不同的方法进行研究。这些领域包括:机器听觉机器视觉自然语言处理(NLP)图片识别文字识别人脸识......
  • Collection集合:集合进阶概述
         ......
  • openmmlab-实战营二期-openmmlab概述课(一)
    openmmlab实战营-二期-openmmlab概述课(一)目录openmmlab实战营-二期-openmmlab概述课(一)openmmlab概述openmmlab各算法库详细介绍目标检测算法库MMDetection目标检测算法库MMYolo文字检测识别算法库MMOcr3D目标检测算法库MMDetection3D旋转目标检测算法库MMRotate图像分割算法......
  • 人工智能概述(1):定义
    人工智能是什么?时至今日(2023-05-31),其影响已经颇为广泛。当今世界,如人脸识别、语音识别等应用已经很常见了。本文是一个起点,主要是整理一些比较权威的人工智能的定义。注,暂且只有中文信源的定义。 人工智能,英文:ARTIFICIALINTELLIGENCE,简称:AI。 摘自百度百科它......
  • C#运算符大全_各种运算符号的概述及作用
    C#运算符大全_各种运算符号的概述及作用 一、[]方括号([])用于数组、索引器和属性,也可用于指针。1、数组类型是一种后跟[]的类型:int[]fib=newint[100];//创建一个有100元素的数组若要访问数组的一个元素,则用方括号括起所需元素的索引:fib[0]=fib[1]=1;for(int......
  • idea Maven 在升级后 提示Plugin with id ‘maven‘ not found
    Pluginwithid‘maven‘notfound的解决办法应用的插件名字已经从Maven变成maven-publish。修改方式:在build.gradle文件中修改applyplugin:'maven'改成:applyplugin:'maven-publish'......
  • IntelliJ IDEA安装教程
    在安装编译器之前,有些人可能会疑惑是否需要安装Java环境。如果你使用的是IntelliJIDEA,那么你不需要手动安装Java环境,因为IDEA已经包含了Java开发所需的一切。除了Java环境,你还提到了Git和Maven。同样地,如果你使用的是IntelliJIDEA,你也不需要手动安装Git和Maven。IDEA已经......
  • WPF概述
    文章来源:WindowsPresentationFoundation-WPF.NETFrameworkWPF概述WindowsPresentationFoundation(WPF)可以创建适用于Windows且具有非凡视觉效果的桌面客户端应用程序。WPF的核心是一个与分辨率无关且基于矢量的呈现引擎,旨在充分利用现代图形硬件。WPF通过一......
  • 协程概述讲解
    协程线程分为用户级线程,内核级线程和轻量级线程。Linux中使用的是轻量级线程,而协程虽然是运行在线程之上,但是是run在用户空间。并且协程和线程一样,拥有自己的调度器、cpu的上下文切换等。协程在我个人看来是一种用户级线程;这是因为对于cpu有上下文的切换,而且是在用户空间的层......