Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/components/freebsd-doc/articles_linux-emulation/changes/?format=api&page=13
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 891,
    "next": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/changes/?format=api&page=14",
    "previous": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/changes/?format=api&page=12",
    "results": [
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26392/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:57:59.748349Z",
            "action": 5,
            "target": "Contribuido por: Attilio Rao <email>attilio@FreeBSD.org</email>",
            "id": 93038,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93038/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26393/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:08.307406Z",
            "action": 5,
            "target": "El conjunto de primitivas de sincronización de FreeBSD se basa en la idea de suministrar un número bastante grande de primitivas diferentes de manera que se pueda utilizar la mejor para cada situación particular y apropiada.",
            "id": 93039,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93039/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26394/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:16.878183Z",
            "action": 5,
            "target": "Desde un punto de vista de alto nivel, puede considerar tres tipos de primitivas de sincronización en el kernel de FreeBSD:",
            "id": 93040,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93040/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26395/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:25.152348Z",
            "action": 5,
            "target": "operaciones atómicas y barreras de memoria",
            "id": 93041,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93041/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26396/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:34.522919Z",
            "action": 5,
            "target": "Cerraduras",
            "id": 93042,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93042/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26397/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:45.304673Z",
            "action": 5,
            "target": "barreras de programación",
            "id": 93043,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93043/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26398/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:58:53.799094Z",
            "action": 5,
            "target": "A continuación hay descripciones de las 3 familias. Para cada bloqueo, debería consultar la página de manual vinculada (cuando sea posible) para obtener explicaciones más detalladas.",
            "id": 93044,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93044/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26399/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T09:59:02.570323Z",
            "action": 5,
            "target": "Operaciones atómicas y barreras de memoria",
            "id": 93045,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93045/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26400/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:00:12.479419Z",
            "action": 5,
            "target": "Las operaciones atómicas se implementan a través de un conjunto de funciones que realizan aritmética simple sobre operandos de memoria de forma atómica con respecto a eventos externos (interrupciones, apropiación, etc.). Las operaciones atómicas pueden garantizar la atomicidad solo en tipos de datos pequeños (en el orden de magnitud del <literal>.long.</literal>tipo de datos de arquitectura C), por lo que rara vez se debe usar directamente en el código de nivel final, si no solo para operaciones muy simples (como la configuración de banderas en un mapa de bits, por ejemplo). De hecho, es bastante simple y común escribir una semántica incorrecta basada solo en operaciones atómicas (generalmente referidas como sin bloqueo). El kernel de FreeBSD ofrece una forma de realizar operaciones atómicas junto con una barrera de memoria. Las barreras de memoria garantizarán que ocurra una operación atómica siguiendo un orden específico con respecto a otros accesos a la memoria. Por ejemplo, si necesitamos que ocurra una operación atómica justo después de que se completen todas las demás escrituras pendientes (en términos de instrucciones que reordenan las actividades de búfer), necesitamos usar explícitamente una barrera de memoria junto con esta operación atómica. Por lo tanto, es sencillo entender por qué las barreras de memoria juegan un papel clave para la construcción de bloqueos de nivel superior (como refcounts, mutexes, etc.). Para obtener una explicación detallada sobre las operaciones atómicas, consulte <citerefentry><refentrytitle>atomic</refentrytitle><manvolnum>9</manvolnum></citerefentry>. Sin embargo, está lejos de señalar que las operaciones atómicas (y las barreras de memoria también) deberían idealmente usarse solo para construir bloqueos frontales (como mutex).",
            "id": 93046,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93046/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26401/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:00:34.808431Z",
            "action": 5,
            "target": "Recuentos",
            "id": 93047,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93047/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26402/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:01:23.307624Z",
            "action": 5,
            "target": "Los refcounts son interfaces para manejar contadores de referencia. Se implementan a través de operaciones atómicas y están destinadas a usarse solo en casos, donde el contador de referencia es lo único que debe protegerse, por lo que incluso algo como un spin-mutex está en desuso. El uso de la interfaz refcount para estructuras, donde ya se usa un mutex, a menudo es incorrecto, ya que probablemente deberíamos cerrar el contador de referencia en algunas rutas ya protegidas. Actualmente no existe una página de manual que discuta refcount, solo verifique <filename>sys/refcount.h</filename> para obtener una descripción general de la API existente.",
            "id": 93048,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93048/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26403/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:01:31.510227Z",
            "action": 5,
            "target": "Cerraduras",
            "id": 93049,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93049/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26404/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:01:41.736287Z",
            "action": 5,
            "target": "El kernel de FreeBSD tiene enormes clases de bloqueos. Cada bloqueo está definido por algunas propiedades peculiares, pero probablemente la más importante es el evento vinculado a los titulares de la competencia (o en otros términos, el comportamiento de los hilos que no pueden adquirir el bloqueo). El esquema de bloqueo de FreeBSD presenta tres comportamientos diferentes para los contendientes:",
            "id": 93050,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93050/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26405/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:01:50.569688Z",
            "action": 5,
            "target": "hilado",
            "id": 93051,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93051/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26406/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:00.345285Z",
            "action": 5,
            "target": "bloqueo",
            "id": 93052,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93052/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26407/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:13.392049Z",
            "action": 5,
            "target": "dormir",
            "id": 93053,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93053/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26408/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:22.394555Z",
            "action": 5,
            "target": "los números no son casuales",
            "id": 93054,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93054/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26409/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:31.083930Z",
            "action": 5,
            "target": "Cerraduras giratorias",
            "id": 93055,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93055/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26410/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:43.512795Z",
            "action": 5,
            "target": "Las cerraduras giratorias permiten a los camareros girar hasta que no pueden adquirir la cerradura. Un asunto importante con el que se trata es cuando un hilo compite en un bloqueo de giro si no está programado. Dado que el kernel de FreeBSD es preventivo, esto expone el bloqueo de giro al riesgo de interbloqueos que pueden resolverse simplemente deshabilitando las interrupciones mientras se adquieren. Por esta y otras razones (como la falta de soporte de propagación de prioridad, deficiencias en los esquemas de equilibrio de carga entre las CPU, etc.), los bloqueos de giro están destinados a proteger rutas de código muy pequeñas o, idealmente, no deben usarse en absoluto si no se solicitan explícitamente ( explicado más adelante).",
            "id": 93056,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93056/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26411/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:02:52.624918Z",
            "action": 5,
            "target": "Bloqueo",
            "id": 93057,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93057/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26412/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:03:09.908136Z",
            "action": 5,
            "target": "Las cerraduras de bloque permiten que los camareros sean desprogramados y bloqueados hasta que el propietario de la cerradura no la deje caer y despierte a uno o más contendientes. Para evitar problemas de inanición, las cerraduras de bloqueo se propagan prioritariamente de los camareros al propietario. Los bloqueos de bloqueo deben implementarse a través de la interfaz del torniquete y están destinados a ser el tipo de bloqueo más utilizado en el núcleo, si no se cumplen condiciones particulares.",
            "id": 93058,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93058/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26413/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:03:17.223233Z",
            "action": 5,
            "target": "Dormir",
            "id": 93059,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93059/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26414/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:03:43.556855Z",
            "action": 5,
            "target": "Las cerraduras para dormir permiten que los camareros se desagreguen y se duerman hasta que el soporte de la cerradura no se caiga y despierte a uno o más camareros. Dado que los bloqueos de suspensión están destinados a proteger grandes rutas de código y atender eventos asincrónicos, no realizan ningún tipo de propagación de prioridad. Deben implementarse a través del <citerefentry><refentrytitle>sleepqueue</refentrytitle><manvolnum>9</manvolnum></citerefentry> interfaz.",
            "id": 93060,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93060/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26415/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:03:57.210505Z",
            "action": 5,
            "target": "El orden utilizado para adquirir cerraduras es muy importante, no solo por la posibilidad de interbloqueo debido a las inversiones de orden de cerradura, sino incluso porque la adquisición de cerraduras debe seguir reglas específicas vinculadas a la naturaleza de las cerraduras. Si echa un vistazo a la tabla de arriba, la regla práctica es que si un hilo tiene un candado de nivel n (donde el nivel es el número listado cerca del tipo de candado) no está permitido adquirir un candado de niveles superiores , ya que esto rompería la semántica especificada para una ruta. Por ejemplo, si un hilo tiene un bloqueo de bloqueo (nivel 2), se le permite adquirir un bloqueo de giro (nivel 1) pero no un bloqueo de suspensión (nivel 3), ya que los bloqueos de bloqueo están destinados a proteger rutas más pequeñas que el bloqueo de suspensión ( Sin embargo, estas reglas no se refieren a operaciones atómicas o barreras de programación).",
            "id": 93061,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93061/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26416/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:05.231424Z",
            "action": 5,
            "target": "Esta es una lista de bloqueo con sus respectivos comportamientos:",
            "id": 93062,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93062/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26417/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:21.400301Z",
            "action": 37,
            "target": "spin mutex - spinning - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93063,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93063/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26418/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:24.699081Z",
            "action": 37,
            "target": "sleep mutex - blocking - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93064,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93064/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26419/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:27.828939Z",
            "action": 37,
            "target": "pool mutex - blocking - <citerefentry><refentrytitle>mtx_pool</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93065,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93065/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26420/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:55.671925Z",
            "action": 5,
            "target": "dormir familia - dormir - <citerefentry><refentrytitle>sleep</refentrytitle><manvolnum>9</manvolnum></citerefentry> pause tsleep msleep msleep spin msleep rw msleep sx",
            "id": 93066,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93066/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26421/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:04:59.467720Z",
            "action": 37,
            "target": "condvar - sleeping - <citerefentry><refentrytitle>condvar</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93067,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93067/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26422/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:12.333055Z",
            "action": 5,
            "target": "rwlock - bloqueo - <citerefentry><refentrytitle>rwlock</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93068,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93068/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26423/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:16.154550Z",
            "action": 37,
            "target": "sxlock - sleeping - <citerefentry><refentrytitle>sx</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93069,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93069/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26424/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:19.403312Z",
            "action": 37,
            "target": "lockmgr - sleeping - <citerefentry><refentrytitle>lockmgr</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93070,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93070/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26425/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:23.198945Z",
            "action": 37,
            "target": "semaphores - sleeping - <citerefentry><refentrytitle>sema</refentrytitle><manvolnum>9</manvolnum></citerefentry>",
            "id": 93071,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93071/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26426/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:32.245669Z",
            "action": 5,
            "target": "Entre estos bloqueos, solo los mutex, sxlocks, rwlocks y lockmgrs están destinados a manejar la recursividad, pero actualmente la recursividad solo es compatible con mutexes y lockmgrs.",
            "id": 93072,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93072/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26427/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:41.589467Z",
            "action": 5,
            "target": "Barreras de programación",
            "id": 93073,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93073/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26428/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:50.176195Z",
            "action": 5,
            "target": "Las barreras de programación están destinadas a utilizarse para impulsar la programación del enhebrado. Consisten principalmente en tres stubs diferentes:",
            "id": 93074,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93074/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26429/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:05:58.999262Z",
            "action": 5,
            "target": "secciones críticas (y preferencia)",
            "id": 93075,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93075/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26430/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:06:02.752434Z",
            "action": 37,
            "target": "sched_bind",
            "id": 93076,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93076/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26431/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:06:06.036819Z",
            "action": 37,
            "target": "sched_pin",
            "id": 93077,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93077/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26432/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:06:35.600397Z",
            "action": 5,
            "target": "Generalmente, estos deben usarse solo en un contexto particular e incluso si a menudo pueden reemplazar bloqueos, deben evitarse porque no permiten el diagnóstico de problemas eventuales simples con herramientas de depuración de bloqueo (como <citerefentry><refentrytitle>testigo</refentrytitle><manvolnum>4</manvolnum></citerefentry>).",
            "id": 93078,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93078/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26433/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:06:49.386886Z",
            "action": 5,
            "target": "Secciones críticas",
            "id": 93079,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93079/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26434/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:07:24.597660Z",
            "action": 5,
            "target": "El kernel de FreeBSD se ha hecho preventivo básicamente para tratar con hilos de interrupción. De hecho, para evitar una latencia de interrupción alta, los subprocesos de prioridad de tiempo compartido pueden ser reemplazados por subprocesos de interrupción (de esta manera, no necesitan esperar para ser programados como vistas previas de la ruta normal). La preferencia, sin embargo, introduce nuevos puntos de carrera que también deben manejarse. A menudo, para hacer frente a la preferencia, lo más sencillo es desactivarla por completo. Una sección crítica define un fragmento de código (delimitado por el par de funciones <citerefentry><refentrytitle>critical_enter</refentrytitle><manvolnum>9</manvolnum></citerefentry> y <citerefentry><refentrytitle>critical_exit</refentrytitle><manvolnum>9</manvolnum></citerefentry>, donde se garantiza que la preferencia no ocurrirá (hasta que el código protegido se ejecute por completo). Esto a menudo puede reemplazar un candado de manera efectiva, pero debe usarse con cuidado para no perder toda la ventaja que brinda la preferencia.",
            "id": 93080,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93080/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26435/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:07:29.565647Z",
            "action": 37,
            "target": "sched_pin/sched_unpin",
            "id": 93081,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93081/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26436/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:08:15.882404Z",
            "action": 5,
            "target": "Otra forma de lidiar con la preferencia es <function>sched_pin()</function> interfaz. Si un fragmento de código está cerrado en el <function>sched_pin()</function> y <function>sched_unpin()</function> par de funciones, se garantiza que el subproceso respectivo, incluso si puede ser reemplazado, siempre se ejecutará en la misma CPU. La fijación es muy eficaz en el caso particular cuando tenemos que acceder a datos por CPU y asumimos que otros hilos no cambiarán esos datos. La última condición determinará una sección crítica como una condición demasiado fuerte para nuestro código.",
            "id": 93082,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93082/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26437/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:08:23.693531Z",
            "action": 37,
            "target": "sched_bind/sched_unbind",
            "id": 93083,
            "action_name": "Marked for edit",
            "url": "https://translate-dev.freebsd.org/api/changes/93083/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26438/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:09:25.957515Z",
            "action": 5,
            "target": "<function>sched_bind</function> es una API que se utiliza para vincular un hilo a una CPU en particular durante todo el tiempo que ejecuta el código, hasta que <function>sched_unbind</function>la llamada a la función no la desvincula. Esta función tiene un papel clave en situaciones en las que no puede confiar en el estado actual de las CPU (por ejemplo, en las primeras etapas del arranque), ya que desea evitar que su hilo migre en CPU inactivas. Ya que <function>sched_bind</function> y<function>sched_unbind</function> manipular las estructuras internas del programador, es necesario incluirlas en <function>sched_lock</function> adquisición/liberación cuando se usa.",
            "id": 93084,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93084/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26439/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:09:39.587155Z",
            "action": 5,
            "target": "Estructura de proceso",
            "id": 93085,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93085/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26440/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:10:29.664088Z",
            "action": 5,
            "target": "Varias capas de emulación a veces requieren algunos datos adicionales por proceso. Puede administrar estructuras separadas (una lista, un árbol, etc.) que contienen estos datos para cada proceso, pero esto tiende a ser lento y consume memoria. Para solucionar este problema el FreeBSD <literal>proc</literal> estructura contiene <literal>p_emuldata</literal>,que es un puntero vacío a algunos datos específicos de la capa de emulación. Esta <literal>proc</literal> La entrada está protegida por proc mutex.",
            "id": 93086,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93086/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/26441/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/freebsd-doc/articles_linux-emulation/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/Aaron/?format=api",
            "timestamp": "2020-12-17T10:11:16.102764Z",
            "action": 5,
            "target": "El FreeBSD <literal>proc</literal> structure contains a <literal>p_sysent</literal>entrada que identifica qué ABI está ejecutando este proceso. De hecho, es un puntero al <literal>sysentvec</literal> descrito arriba. Entonces, al comparar este puntero con la dirección donde el <literal>sysentvec</literal> Si se almacena la estructura para la ABI dada, podemos determinar efectivamente si el proceso pertenece a nuestra capa de emulación. El código normalmente se ve así:",
            "id": 93087,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/93087/?format=api"
        }
    ]
}