Fitting different instances of `LinearSVR` is not thread-safe

### Describe the bug

Found while working on #30041.

See the reproducer below. Fitting `LinearSVR` probably relies on a shared global state in the C++ code and that introduces a race condition when fitting several models concurrently in different threads. As a result, the outcomes are randomly corrupted.

`LinearSVC` does not seem to have the problem (or at least not with its default solver).

### Steps/Code to Reproduce

```python
# %%
import numpy as np
from sklearn.svm import LinearSVR, LinearSVC
from sklearn.datasets import make_regression
import warnings
from sklearn.exceptions import ConvergenceWarning
from joblib import Parallel, delayed


warnings.filterwarnings("ignore", category=ConvergenceWarning)


X, y = make_regression(n_samples=100, n_features=20, noise=0.1, random_state=42)


C_range = np.logspace(-6, 6, 13)

model_class = LinearSVR
if model_class == LinearSVC:
    y = np.sign(y)  # Convert to binary classification for LinearSVC


sequential_results = [
    model_class(C=C, random_state=0).fit(X, y).coef_.copy() for C in C_range
]


parallel_results = Parallel(n_jobs=4, backend="threading")(
    delayed(lambda C: model_class(C=C, random_state=0).fit(X, y).coef_.copy())(C)
    for C in C_range
)
np.testing.assert_array_equal(
    sequential_results,
    parallel_results,
    err_msg="Parallel and sequential results differ.",
)
```

### Expected Results

Nothing.

### Actual Results

```python

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[22], line 32
     23 sequential_results = [
     24     model_class(C=C, random_state=0).fit(X, y).coef_.copy() for C in C_range
     25 ]
     28 parallel_results = Parallel(n_jobs=4, backend="threading")(
     29     delayed(lambda C: model_class(C=C, random_state=0).fit(X, y).coef_.copy())(C)
     30     for C in C_range
     31 )
---> 32 np.testing.assert_array_equal(
     33     sequential_results,
     34     parallel_results,
     35     err_msg="Parallel and sequential results differ.",
     36 )

    [... skipping hidden 2 frame]

File ~/miniforge3/envs/dev/lib/python3.13/site-packages/numpy/testing/_private/utils.py:921, in assert_array_compare(comparison, x, y, err_msg, verbose, header, precision, equal_nan, equal_inf, strict, names)
    916         err_msg += '\n' + '\n'.join(remarks)
    917         msg = build_err_msg([ox, oy], err_msg,
    918                             verbose=verbose, header=header,
    919                             names=names,
    920                             precision=precision)
--> 921         raise AssertionError(msg)
    922 except ValueError:
    923     import traceback

AssertionError: 
Arrays are not equal
Parallel and sequential results differ.
Mismatched elements: 120 / 260 (46.2%)
Max absolute difference among violations: 0.08899258
Max relative difference among violations: 34.19844827
 ACTUAL: array([[ 1.041988e-05,  3.557394e-05,  1.559387e-05,  7.395653e-06,
         2.093259e-06,  1.044073e-05,  9.847355e-06,  3.642882e-05,
         3.347666e-05,  2.792198e-05, -1.039337e-05,  7.220585e-06,...
 DESIRED: array([[ 1.041988e-05,  3.557394e-05,  1.559387e-05,  7.395653e-06,
         2.093259e-06,  1.044073e-05,  9.847355e-06,  3.642882e-05,
         3.347666e-05,  2.792198e-05, -1.039337e-05,  7.220585e-06,...
```

### Versions

```shell
System:
    python: 3.13.3 | packaged by conda-forge | (main, Apr 14 2025, 20:44:30) [Clang 18.1.8 ]
executable: /Users/ogrisel/miniforge3/envs/dev/bin/python
   machine: macOS-15.5-arm64-arm-64bit-Mach-O

Python dependencies:
      sklearn: 1.8.dev0
          pip: 25.1.1
   setuptools: 75.8.2
        numpy: 2.2.6
        scipy: 1.15.2
       Cython: 3.1.1
       pandas: 2.2.3
   matplotlib: 3.10.3
       joblib: 1.5.1
threadpoolctl: 3.6.0

Built with OpenMP: True

threadpoolctl info:
       user_api: blas
   internal_api: openblas
    num_threads: 10
         prefix: libopenblas
       filepath: /Users/ogrisel/miniforge3/envs/dev/lib/libopenblas.0.dylib
        version: 0.3.30
threading_layer: openmp
   architecture: VORTEX

       user_api: openmp
   internal_api: openmp
    num_threads: 10
         prefix: libomp
       filepath: /Users/ogrisel/miniforge3/envs/dev/lib/libomp.dylib
        version: None
```

COMMENT:
`test_logisticregression_liblinear_sample_weight` might be impacted by the same problem when run concurrently with `pytest-run-parallel`: it's using the liblinear solver for logistic regression with different solver configurations and the state of the internal liblinear RNG might be shared.

We should investigate if this is the same problem or not. And if not, open a dedicated issue with a minimal reproducer that does not require `pytest-run-parallel`.

Labels: Bug